tp5+双语言

摘要:
//多语言列表'lang_list'=>//默认语言“Default_lang”=>默认;}echojson_encode(array(“status”=>charset=UTF-8”>metadata-n-head=“true”content=“telephone=no”name=“format detection”&gt,初始规模=1.0;

1.配置

    // 是否开启多语言
    'lang_switch_on'         => true,
    //多语言列表
    'lang_list' => ['id-id','en-us'],
    // 默认语言
    'default_lang'           => 'id-id',

2.控制器

<?php
namespace appapicontroller;
use thinkController;
class Langchange extends Controller
{
  
    public function change(){
        $lang=input("lang");
        switch($lang){
            case 'en':
                cookie('think_var','en-us');
                break;
            case 'id':
                cookie('think_var','id-id');
                break;
            case '':
                cookie('think_var','id-id');
                break;
            default:
                break;
        }
        echo json_encode(array("status"=>1));
    }
    
    public function choice(){
        return $this->fetch();   
    }
   
}

3.视图层

tp5+双语言第1张tp5+双语言第2张
<!DOCTYPE html>
<html data-n-head="" lang="zh-tw">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <meta data-n-head="true" content="Meta description" name="description" data-hid="description">
    <meta data-n-head="true" content="telephone=no" name="format-detection">
    <meta name="viewport" content="width=device-width,initial-scale=1.0,user-scalable=no, user-scalable=no,minimum-scale=1.0, maximum-scale=1.0,viewport-fit=contain" data-n-head="true">
    <!--<meta name="viewport" content="... viewport-fit=cover"/>-->
    <title data-n-head="true">Language</title>
    <style>



* {
    margin: 0;
    padding: 0
}

body, html {
    height: 100%;
     100%;
    background: #1c1a25 !important;
}

body {
    margin: 0;
    padding: 0;
    font-family: Microsoft YaHei, Arial, Verdana, Sans-serif;
    font-size: .14rem;
    -webkit-overflow-scrolling: touch;
}
section.tradBC,#msgContentC,#msgPubContentC,.zhushouContent,#advContentC {
    background: url(../img/index/homeBg.jpg) no-repeat 0 !important;
    background-size: cover !important;
}
html {
    font-size: 625%;
    background: #fff
}

img {
     100%
}

img, legend {
    border: 0
}

*, :after, :before {
    -webkit-box-sizing: border-box;
    -moz-box-sizing: border-box;
    box-sizing: border-box;
    text-size-adjust: 100%;
    -webkit-tap-highlight-color: transparent;
    background-color: transparent
}

:focus, a:active, a:hover {
    outline: 0
}

dd, dl, legend, ol, td, th, ul, ul > li {
    list-style: none
}

a {
    background-color: transparent;
    text-decoration: none;
    cursor: pointer;
    color: inherit
}

abbr[title] {
    border-bottom: 1px dotted
}

b, optgroup, strong {
    font-weight: 400
}

dfn {
    font-style: italic
}

h1 {
    font-size: 2em
}

mark {
    background: #ff0;
    color: #000
}

small {
    font-size: 80%
}

sub, sup {
    font-size: 75%;
    line-height: 0;
    vertical-align: baseline
}

sup {
    top: -.5em
}

sub {
    bottom: -.25em
}

svg:not(:root) {
    overflow: hidden
}

figure {
    margin: 1em 40px
}

hr {
    -moz-box-sizing: content-box;
    box-sizing: content-box
}

pre, textarea {
    overflow: auto
}

code, kbd, pre, samp {
    font-family: monospace, monospace;
    font-size: 1em
}

button, input, optgroup, select, textarea {
    color: inherit;
    font: inherit;
    margin: 0;
    border-radius: 0
}

button {
    overflow: visible
}

button, select {
    text-transform: none
}

button, html input[type=button], input[type=reset], input[type=submit] {
    -webkit-appearance: button;
    cursor: pointer
}

button[disabled], html input[disabled] {
    cursor: default
}

button::-moz-focus-inner, input::-moz-focus-inner {
    border: 0;
    padding: 0
}

input {
    line-height: normal
}

input[type=checkbox], input[type=radio] {
    box-sizing: border-box;
    padding: 0;
    vertical-align: middle
}

input[type=number]::-webkit-inner-spin-button, input[type=number]::-webkit-outer-spin-button {
    height: auto;
    -webkit-appearance: none
}

input[type=search] {
    -webkit-appearance: textfield;
    -moz-box-sizing: content-box;
    -webkit-box-sizing: content-box;
    box-sizing: content-box
}

input[type=search]::-webkit-search-cancel-button, input[type=search]::-webkit-search-decoration {
    -webkit-appearance: none
}

fieldset {
    border: 1px solid silver;
    margin: 0 2px;
    padding: .35em .625em .75em
}

table {
    border-collapse: collapse;
    border-spacing: 0
}

.clearfix, .jiathis_style_m {
    zoom: 1
}

.clearfix:after {
    content: "";
    display: block;
    clear: both;
    height: 0;
    visibility: hidden
}

button, input, optgroup, select, textarea {
    outline: none;
    border: none
}

em, i {
    font-style: normal
}

#head, #head1, .head {
     100%;
    height: .5rem;
    text-align: center;
    background: #1c1a25;
    box-shadow: inset 0 0 0 0 #e5e5e5;
    color: #ffbf23;
    position: fixed;
    z-index: 1000;
    top: 0
}

#head1 h3, #head h3, .head h3 {
    height: .5rem;
    line-height: .5rem;
    margin: 0;
    font-size: .16rem;
    font-weight: 400;
    overflow: hidden
}

.product-name {
    position: relative
}

#head1 h3 span:first-of-type, #head h3 span:first-of-type, .head h3 span:first-of-type {
    display: block;
    font-size: .16rem
}

.product-name em {
    position: absolute;
    top: .18rem;
    font-size: .12rem;
    left: 50%;
    margin-left: -.32rem
}

#head1 .head_content .left, #head .head_content .left, .head .head_content .left {
    position: absolute;
    top: 0;
    left: .2rem
}

#head1 .head_content .left a, #head .head_content .left a, .head .head_content .left {
    font-size: .2rem
}

#head1 .head_content .left a, #head1 .head_content .right a, #head .head_content .left a, #head .head_content .right a, .head .head_content .left a, .head .head_content .right a {
    color: #fff;
    line-height: .5rem
}

.arrow_left:after {
    content: " ";
    display: inline-block;
    -webkit-transform: rotate(225deg);
    transform: rotate(225deg);
    height: 13px;
     13px;
    border- 2px 2px 0 0;
    border-color: #fff;
    border-style: solid;
    position: relative;
    top: -2px;
    position: absolute;
    left: 0;
    top: 19px
}

.footer {
     100%;
    height: .49rem;
    line-height: .49rem;
    position: fixed;
    bottom: 0;
    /*border-top: 1px solid #e9e9e9;*/
    z-index: 99
}

.footer ul {
     100%;
    height: 100%;
    display: flex;
    display: -webkit-flex
}

.footer ul li {
    height: 100%;
    text-align: center;
    flex: 1;
    -webkit-flex: 1
}

@media only screen and (device- 375px) and (device-height: 812px) and (-webkit-device-pixel-ratio: 3) {
    .footer {
        height: .8rem
    }
}


.page-main {
    padding: .5rem 0;
    color: #999999 !important;
}

::-webkit-input-placeholder {
    color: #ddd;
    font-size: .15rem
}

:-moz-placeholder, ::-moz-placeholder {
    color: #ddd;
    font-size: .15rem
}

:-ms-input-placeholder {
    color: #ddd;
    font-size: .15rem
}



@-webkit-keyframes swiper-preloader-spin {
    to {
        -webkit-transform: rotate(1turn)
    }
}

@keyframes swiper-preloader-spin {
    to {
        transform: rotate(1turn)
    }
}
</style>
<!--<link href="/Public/Qts/Home/css/common.css" rel="stylesheet">-->
    <style data-vue-ssr-id="4cddb420:0 cf79f97a:0">
    .li-main > span[data-v-adff73de] {
        position: relative;
        -webkit-box-flex: 1;
        -ms-flex: 1;
        flex: 1;
        justify-items: center;
        -webkit-box-align: center;
        -ms-flex-align: center;
        align-items: center;
        padding-left: .4rem
    }
    
    .li-main > span[data-v-adff73de]:before {
        position: absolute;
        left: 0;
         .32rem;
        height: .38rem;
        margin-top: .08rem;
        content: "";
        background-repeat: no-repeat
    }
    
    .history span[data-v-7ecec926] {
        display: block;
         .8rem;
        height: .2rem;
        line-height: .2rem;
        text-align: center;
        font-size: .14rem;
        border-radius: .1rem 0 0 .1rem;
        margin-top: .1rem;
        margin-right: -.01rem
    }
    
    .history span.order[data-v-7ecec926] {
        border: 1px solid #2187f7;
        color: #2187f7
    }
    
    .history span.recharge[data-v-7ecec926] {
        background: #2289f8;
        color: #fff
    }
    
    .titles > div[data-v-7ecec926] {
         25%;
        float: left;
        text-align: center;
        line-height: .36rem
    }
    
    .titles > div.on[data-v-7ecec926] {
        color: #2187f7;
        position: relative
    }
    
    .titles > div[data-v-7ecec926]:last-child {
        -webkit-box-shadow: none;
        box-shadow: none
    }
    
    .titles > div.on span[data-v-7ecec926] {
        display: inline-block;
         30%;
        height: .02rem;
        background: #2187f7;
        position: absolute;
        bottom: 0;
        left: 50%;
        margin-left: -15%;
        border-radius: .2rem
    }
    
    .lists ul[data-v-7ecec926] {
         100%;
        padding: .15rem;
        padding-bottom: .7rem;
        height: 100%;
        overflow-y: scroll
    }
    
    .lists ul li[data-v-7ecec926] {
         100%;
        padding: .1rem .2rem;
        background: #fff;
        display: -webkit-box;
        display: -ms-flexbox;
        display: flex;
        display: -webkit-flex;
        position: relative;
        -webkit-box-shadow: 0 2px 5px #ebeff3;
        box-shadow: 0 2px 5px #ebeff3;
        border-radius: .1rem;
        margin-bottom: .2rem
    }
    
    .lists ul li > div.left[data-v-7ecec926] {
        -webkit-box-flex: 4;
        -ms-flex: 4;
        flex: 4;
        -webkit-flex: 4;
        border-right: .01rem solid #e5e5e5;
        padding-left: .1rem
    }
    
    .lists ul li > div.right[data-v-7ecec926] {
        -webkit-box-flex: 1;
        -ms-flex: 1;
        flex: 1;
        -webkit-flex: 1;
        padding-left: .1rem
    }
    
    .lists ul li p[data-v-7ecec926] {
        line-height: .3rem
    }
    
    .lists ul li span.hands[data-v-7ecec926], .lists ul li span.name[data-v-7ecec926] {
        font-size: .14rem;
        color: #333
    }
    
    .lists ul li span.tag[data-v-7ecec926] {
        display: inline-block;
        vertical-align: middle;
         .16rem;
        height: .16rem;
        text-align: center;
        line-height: .16rem;
        color: #fff;
        font-size: .1rem;
        border-radius: .08rem;
        margin: 0 .05rem
    }
    
    .lists ul li span.ask[data-v-7ecec926], .lists ul li span.open[data-v-7ecec926] {
        font-size: 12px;
        color: #999
    }
    
    .lists ul li span.ask[data-v-7ecec926] {
        padding-left: .1rem
    }
    
    .exitOut[data-v-4dec191d] {
        height: .45rem;
        line-height: .45rem;
        background: #fff;
        margin-top: .1rem;
        font-size: 15px;
        color: #ffbf23 !important;
        letter-spacing: 0
    }
    
    .list[data-v-4dec191d] {
        margin-top: 0
    }
    
    .list .all-same2[data-v-4dec191d], .list .all-same[data-v-4dec191d] {
        height: .5rem;
        line-height: .5rem;
        position: relative;
        background: #171520;
        padding: 0 .14rem;
        font-size: 15px;
        color: #b0afa5;
        letter-spacing: -.46px
    }
    
    .list .all-same[data-v-4dec191d]:nth-of-type(3) {
        margin-bottom: .1rem
    }
    
    .list .all-same > p[data-v-4dec191d] {
        color: #999;
        font-size: .14rem;
        position: absolute;
        right: .28rem;
        top: 0
    }
    
    .list > div[data-v-4dec191d]:last-child {
        border-bottom: none
    }
    
    #div1[data-v-4dec191d] {
         .54rem;
        height: .3rem;
        border-radius: 50px;
        position: absolute;
        top: .12rem;
        right: .14rem
    }
    
    #div2[data-v-4dec191d] {
         .28rem;
        height: .28rem;
        border-radius: 48px;
        position: absolute;
        background: #fff;
        -webkit-box-shadow: 0 2px 4px rgba(0, 0, 0, .4);
        box-shadow: 0 2px 4px rgba(0, 0, 0, .4)
    }
    
    .open1[data-v-4dec191d] {
        background: #ffbf23
    }
    
    .open2[data-v-4dec191d] {
        top: 1px;
        right: 0
    }
    
    .pccode[data-v-4dec191d] {
        position: absolute;
        right: .28rem;
        top: 0;
        color: #999;
        font-size: .14rem
    }
    .close1[data-v-4dec191d] {
        background: hsla(0,0%,100%,.4);
        border: 1px solid rgba(0,0,0,.15);
        border-left: transparent;
    }
    .close2[data-v-4dec191d] {
        left: 0;
        top: 0;
        border: 1px solid rgba(0,0,0,.1);
    }
    body {
        background: #1c1a25
    }</style>
</head>
<body>
<div id="__nuxt">
    <div class="progress" data-v-4a8a9a01=""
         style=" 0%; height: 2px; background-color: rgb(1, 40, 97); opacity: 0;"></div>
    <div data-v-4dec191d="" class="content">
        <div data-v-4dec191d="" id="head">
            <div class="head_content"><h3 class="product-name"><span style="color: #ffbf23">Language</span><em></em></h3>
                <div class="left" onclick="window.location.href='http://t.zoukankan.com/'"><a class="arrow_left"></a></div>
                <div class="right arrow_right"><b></b></div>
            </div>
        </div>
        <section data-v-4dec191d="" class="page-main" style="padding-bottom: 0.5rem;">
            
            <div data-v-4dec191d="" class="list">
                
                    <!--<div data-v-4dec191d="" class="all-same exitOut">
                        <div data-v-4dec191d="">简体中文  {$Think.lang.yes}{$Think.cookie.think_var}</div>
                    </div>-->
                                
                        {if condition="$Think.cookie.think_var eq 'en-us'"}        
                            <div data-v-4dec191d="" class="all-same" onclick="changelang('id')">
                                <div data-v-4dec191d="">Bahasa Indonesia</div>
                            </div>
                            <div data-v-4dec191d="" class="all-same exitOut">
                                <div data-v-4dec191d="">English</div>
                            </div>
                                    
                        {else/}    
                        <div data-v-4dec191d="" class="all-same exitOut">
                                <div data-v-4dec191d="">Bahasa Indonesia</div>
                        </div>
                        <div data-v-4dec191d="" class="all-same"  onclick="changelang('en')">
                            <div data-v-4dec191d="">English</div>
                        </div>
                        {/if}
                            
        </section>
    </div>
</div>
    <script src="http://libs.baidu.com/jquery/1.10.2/jquery.js"></script>
        <script>
         function changelang(lang){
            var data={'lang':lang};
            $.get("{:url('/api/Langchange/change')}",data,function(){
                window.history.back();
                location.reload();
                //window.self.close();
                //location.parent.reload();
            })
        }
        </script>
</body>
</html>
View Code

4.语言文件

tp5+双语言第3张

tp5+双语言第4张

5.引用

在视图中
{:lang('xxxx')}或者{$Think.lang.xxxx}
在控制器中
lang('xxxx')

 6.切换按钮

    <!--语言切换-->
    <a href="/api/Langchange/choice">
    <div style="position: fixed;
    right: 20px;
    top: 10px;
    padding: 5px;
    background: rgba(255,255,0,0.2);text-align: center;">
        <img src="/static/lang/lang.png" style="20px;height:20px;">
        <br/>
        <span style="color:#fff;">Language</span>
        
    </div>
   </a>
   <!--语言切换-->

免责声明:文章转载自《tp5+双语言》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇linux查看文件大小AI2(App Inventor 2)离线版服务器网络版下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Notice: Undefined offset 的解决方法

Notice: Undefined offset: 1 in D:wwwrootwraskseo404.php on line 5 Notice: Undefined offset: 2 in D:wwwrootwraskseo404.php on line 5 Notice: Undefined offset: 2 in D:wwwrootwraskse...

数据分析--降维--LDA和PCA

一、因子分析   因子分析是将具有错综复杂关系的变量(或样本)综合为少数几个因子,以再现原始变量和因子之间的相互关系,探讨多个能够直接测量,并且具有一定相关性的实测指标是如何受少数几个内在的独立因子所支配,并且在条件许可时借此尝试对变量进行分类。   因子分析的基本思想   根据变量间相关性的大小把变量分组,使得同组内的变量之间的相关性(共性)较高,并用一...

【BIGDATA】Grafana告警之webhook的坑

   近日搭建一套基于ELK&Grafana的监控告警平台,目的是将生产端某性能日志导入ES中,通过Grafana进行可视化监测,同时设置告警。 告警内容推送到自建的webhook服务后,转发到指定的企业微信机器人,这样可以在企业微信群中看到对应告警内容。 整体架构如下图: ELK部分略去不表。重点在于,自行编写webhook,解析告警内容并推送...

Android 相关库、工具

资料 网址 Android Lint Checks:代码规范检查 http://tools.android.com/tips/lint-checks butterknife:Android视图的字段和方法绑定快速注解框架 https://github.com/JakeWharton/butterknife ARouter:Android页...

玩转jquery插件之flexigrid 【转】

http://blog.csdn.net/anshao/archive/2009/08/12/4435167.aspx 用插件来做规律性很强的数据展现是个不错的选择,jquery插件家族中这类插件通常叫做table或者grid,本人用过两个有名的插件:jqgrid和flexgrid,自己也曾经在使用jquery之前尝试过自己写grid插件,这篇文章将就fl...

pyspark mongodb yarn

from pyspark.sql import SparkSessionmy_spark = SparkSession .builder .appName("myApp") .config("spark.mongodb.input.uri", "mongodb://pyspark_admin:admin123@192.168.2.5...