QB PHP 多语言配置

news2024/11/27 22:35:25

1:  下载QBfast .exe 的文件   

2:  安装的时候 ,一定点击  仅为我 安装 而不是 所有人 

3: 如果提示 更新就 更新  , 安装如2

4:  如果遇到 新增 或者编辑已经 配置的项目时 不起作用  :

 右键 文件所属位置  ,然后 上一级  找到data 目录  删除data  下的所有目录 。 

然后在启动 QBfast 的文件   

 然后重新 配置 项目名称 数据库等等  ,点击一键生成  点击   语言包  等待几分钟   然后 在弹出框中选择要保存文件的位置   。

PHP 后端:(参考看云手册 )
修改middleware 中间件 ,修改 lang.php  

在Common.php 中设置 :

                

/**
 * 语言包
 * @param $msg
 * @return array|mixed
 */
function T($msg)
{
    $range = \think\facade\Lang::getLangSet();
    $dbLang = app()->config->get('lang.db-language');
    if (isset($dbLang[$range])) {
        $v = app()->dbConfig->get('lang.' . $dbLang[$range] . '.' . $msg);
        if ($v) {
            return $v;
        }
    }
    return lang($msg);
}

在API的接口中使用 :

   /**
     * 删除
     * @desc (删除)
     * @route (id,name=删除,pid=work.page.,type=,sort=255)
     * @param $ids
     * @return Response
     * @api (string,ids,ID,1)
     */
    public function del($ids = 0): Response
    {
        $model = $this->getModel();
        $result = $model::destroy(explode(',', (string)$ids));
        return out($result ? T('删除成功') : T('删除失败'));
    }

web:

                

<script lang="tsx">
import { defineComponent, onMounted, ref } from 'vue';
import { MessagePlugin } from 'tdesign-vue-next';
import Card from '@/components/card/index.vue';
import TaoForm from '@/components/tao-form';
import { TaoField } from '@/hooks/useForm';
import request from '@/utils/request';
import { ResDataType } from '@/interface';
import { toFormPramas } from '@/utils';
import TaoTable from '@/components/tao-table';
import ListTable from '@/pages/template/list-table.vue';
import i18n from '@/locales/i18n';

const columns: Array<TaoField> = [
  {
    label: 'apikey',
    field: 'ito.apikey',
    type: 'text',
    rules: {
      required: true,
    },
  },
];

export default defineComponent({
  name: 'Device',
  components: {
    Card,
    TaoForm,
    TaoTable,
  },
  setup() {
    const taoForm = ref(null);
    const tabs = { ito: i18n.global.t('ito相关设置'), file:i18n.global.t('ito列表') };
    const key = Object.keys(tabs);
    onMounted(() => {
      // request
      //   .post('xx/sss', {
      //     key,
      //   })
      //   .then(({ data }) => {
      //     if (data) {
      //       taoForm.value.show(data);
      //     }
      //   });
    });

    const onSubmit = async ({ form, callback }) => {
      // config/edit
      request
        .post('xx/sss', { key, data: form })
        .then(({ msg }: ResDataType) => {
          callback(msg);
        })
        .catch(() => callback(undefined));
    };

    const getIto = () => {
      console.log('get info from getITO ');

      request.post('device/getDataFromIto', {}).then(({ msg }) => {
        MessagePlugin.success(msg);
        // listTable.value.taoTable().show();
      });
    };

    const tabValue = ref('file');

    return () => (
      <div>
        <>
          <t-button onClick={() => getIto()}>{i18n.global.t('从IOT平台获取')}</t-button>
        </>
        <div class="qb-bg-white qb-px-5 qb-pb-8">
          <tao-form
            ref={taoForm}
            formProps={{ labelWidth: '140px', labelAlign: 'right' }}
            fields={columns}
            is-dialog={false}
            onSubmit={onSubmit}
          >
            {{
              form: ({ list, form, slots }) => {
                return (
                  <t-tabs v-model={tabValue.value}>
                    <t-tab-panel key="ito" value="ito" label={tabs.ito} destroy-on-hide={false}>
                      <div class="qb-py-5">
                        <qb-form-item list={list} form={form} v-slots={slots} />
                      </div>
                    </t-tab-panel>
                    <t-tab-panel key="file" value="file" label={tabs.file} destroy-on-hide={false}>
                      <div class="qb-py-5">
                        <ListTable name="Device"></ListTable>
                      </div>
                    </t-tab-panel>
                  </t-tabs>
                );
              },
              icon: ({ item, form }) => {
                const { modelValue, key } = toFormPramas(item, form);
                return <qb-icon-picker v-model={modelValue[key]} />;
              },
            }}
          </tao-form>
        </div>
      </div>
    );
  },
});
</script>

<style lang="scss" scoped></style>

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1530414.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Linux】编译器-gcc/g++的使用(预处理、编译、汇编、连接)

目录 01.预处理&#xff08;宏替换&#xff09; 02.编译&#xff08;生成汇编&#xff09; 03.汇编&#xff08;生成机器可识别码&#xff09; 04.连接&#xff08;生成可执行文件或库文件&#xff09; 05.选项 编译器在编译代码时包含以下四个步骤&#xff1a;1.预处理 2…

读算法的陷阱:超级平台、算法垄断与场景欺骗笔记15_虚拟助手

1. 虚拟助手 1.1. 站在全球视角&#xff0c;这些公司是&#xff1a;亚马逊、脸书、谷歌和苹果 1.1.1. 苹果的Siri 1.1.2. 亚马逊的Alexa 1.1.3. 脸书Messenger应用上的M 1.1.4. 谷歌语音助手Assistant 1.2. 借由人工智能技术&#xff0c;虚拟助手将对用户的个人电子档案、…

机器学习 - 选择模型

接着这一篇博客做进一步说明&#xff1a; 机器学习 - 准备数据 PyTorch moduleExplaintorch.nnContains all of the building blocks for computational graphs (essentially a series of computations executed in a particular way). nn 模块为用户提供了丰富的神经网络组件…

【软件】项目管理工具focalboard使用docker部署

github官方网址 使用宝塔进入docker从官方进行镜像仓库拉去mattermost/focalboard 容器》添加容器》容器名》镜像》暴露端口》加号》添加 注意的是原始容器端口号为8000和9092

Vue使用qrcodejs2实现生成二维码

Vue使用qrcodejs2实现生成二维码示例 业务需求 比如说我们需要对下方的列表数据访问地址列进行生成二维码&#xff0c;扫描后跳转对应的地址。 安装qrcodejs2依赖 npm i qrcodejs2引用 在我们需要使用的页面进行引用qrcodejs2 import QRCode from qrcodejs2定义我们的二维…

业务服务:redisson

文章目录 前言一、配置1. 添加依赖2. 配置文件/类3. 注入redission3. 封装工具类 二、应用1. RedisUtils工具类的基本使用 三、队列1. 工具类2. 普通队列2. 有界队列&#xff08;限制数据量&#xff09; 前言 redission是一个开源的java redis的客户端&#xff0c;在其基础上进…

备战蓝桥杯---牛客寒假训练营2VP

题挺好的&#xff0c;收获了许多 1.暴力枚举&#xff08;许多巧妙地处理细节方法&#xff09; n是1--9,于是我们可以直接暴力&#xff0c;对于1注意特判开头0但N&#xff01;1&#xff0c;对于情报4&#xff0c;我们可以把a,b,c,d的所有取值枚举一遍&#xff0c;那么如何判断有…

机器学习——编程实现从零构造训练集的决策树

自己搭建一棵决策树【长文预警】 忙了一个周末就写到了“构建决策树”这一步&#xff0c;还没有考虑划分测试集、验证集、“缺失值、连续值”&#xff0c;预剪枝、后剪枝的部分&#xff0c;后面再补吧&#xff08;挖坑&#xff09; 第二节内容&#xff1a;验证集划分\k折交叉…

Docker-安装

Docker ⛅Docker-安装&#x1f320;各平台支持情况&#x1f320;Server 版本安装☃️Ubuntu☃️Centos &#x1f320;Docker 镜像源修改&#x1f320;Docker 目录修改 ⛅Docker-安装 &#x1f320;各平台支持情况 &#x1f320;Server 版本安装 ☃️Ubuntu &#x1f342;安装…

地脚螺栓的介绍

地脚螺栓简单来说&#xff0c;它是一种机械构件。通常用于铁路、公路、电力、桥梁、锅炉钢结构、塔吊、大型建筑等。一头预埋在地底下&#xff0c;另一头穿过设备用螺母拧紧&#xff0c;用来固定设备&#xff0c;钢结构设施&#xff0c;铁塔设施等&#xff0c;所以地脚螺栓拥有…

上海亚商投顾:沪指震荡调整 北向资金全天净卖出超70亿

上海亚商投顾前言&#xff1a;无惧大盘涨跌&#xff0c;解密龙虎榜资金&#xff0c;跟踪一线游资和机构资金动向&#xff0c;识别短期热点和强势个股。 一.市场情绪 沪指昨日震荡调整&#xff0c;创业板指尾盘跌超1%。猪肉股集体反弹&#xff0c;播恩集团、湘佳股份、傲农生物…

vue项目:使用xlsx导出Excel数据

文章目录 一、安装xlsx二、报错及解决三、编写公共方法四、方法使用 一、安装xlsx 执行命令&#xff1a;npm i xlsx file-saver --save 二、报错及解决 使用时&#xff1a;import XLSX from "xlsx"; 发现如下报错信息 报错原因&#xff1a;xlsx版本不兼容。 解…

幼犬狗粮和成年犬狗粮该怎么挑选?

亲爱的狗友们&#xff0c;我们都知道&#xff0c;给狗狗选择适合的狗粮是非常重要的。那么&#xff0c;面对市面上琳琅满目的幼犬狗粮和成年犬狗粮&#xff0c;我们该如何挑选呢&#xff1f;别担心&#xff0c;接下来就让我来给大家支支招。 &#x1f436; 幼犬狗粮挑选篇 &…

Linux 网络接口管理

为了更深入的了解linux系统&#xff0c;为此做出网络接口管理的知识总结。看起来麻烦&#xff0c;其实一点都不难&#xff0c;相信多看多了解总会是没错的&#xff01;❤️❤️ 一起加油吧&#xff01;✨✨&#x1f389;&#x1f389; 文章目录 前言一、网络配置的文件介绍二、…

路由器怎么做端口映射

路由器在网络中起到了连接不同设备和提供网络服务的重要作用。端口映射是一项常见的操作&#xff0c;它允许外部网络中的设备通过路由器访问内部网络中的设备。我们将介绍如何在路由器上进行端口映射的设置。 理解端口映射 在开始操作之前&#xff0c;我们需要了解一些基本概念…

JJJ:改善ubuntu网速慢的方法

Ubuntu 系统默认的软件下载源由于服务器的原因&#xff0c; 在国内的下载速度往往比较慢&#xff0c;这时我 们可以将 Ubuntu 系统的软件下载源更改为国内软件源&#xff0c;譬如阿里源、中科大源、清华源等等&#xff0c; 下载速度相比 Ubuntu 官方软件源会快很多&#xff01;…

机器学习 - 训练模型

接着这一篇博客做进一步说明&#xff1a; 机器学习 - 选择模型 为了解决测试和预测之间的差距&#xff0c;可以通过更新 internal parameters, the weights set randomly use nn.Parameter() and bias set randomly use torch.randn(). Much of the time you won’t know what…

Python内置对象

Python是一种强大的、动态类型的高级编程语言&#xff0c;其内置对象是构成程序的基础元素。Python的内置对象包括数字、字符串、列表、元组、字典、集合、布尔值和None等&#xff0c;每种对象都有特定的类型和用途。 01 什么是内置对象 这些对象是编程语言的基础构建块&…

C语言 指针练习

一、 a、b是两个浮点型变量&#xff0c;给a、b赋值&#xff0c;建立两个指针分别指向a的地址和b的地址&#xff0c;输出两个指针的值。 #include<stdio.h> int main() {float a,b,*p1,*p2;a10.2;b2.3;p1&a;p2&b;printf("a%f,b%f\n",a,b);printf("…

软考高级:类的分类(边界类、控制类、实体类)概念和例题

作者&#xff1a;明明如月学长&#xff0c; CSDN 博客专家&#xff0c;大厂高级 Java 工程师&#xff0c;《性能优化方法论》作者、《解锁大厂思维&#xff1a;剖析《阿里巴巴Java开发手册》》、《再学经典&#xff1a;《Effective Java》独家解析》专栏作者。 热门文章推荐&am…