前端双语实现方案(VUE版)

一、封装一个lib包

结构如下

en.js

'use strict';exports.__esModule = true;
exports.default = {sp: {input: {amountError: 'Incorrect amount format'},table: {total: 'Total:',selected: 'Selected:',tableNoData: 'No data',tableNoDataSubtext: 'Tip: Suggest to recheck your filter.',tableLoadingData: 'Searching...'},select: {placeholder: 'Select'},preview: {button: 'View'}}
};

zh-CN.js

'use strict';exports.__esModule = true;
exports.default = {sp: {input: {amountError: '金额格式不正确'},table: {total: '共计:',selected: '已选择:',tableNoData: '暂无数据',tableNoDataSubtext: '提示:建议核实筛选条件',tableLoadingData: '搜索中...'},select: {placeholder: '请选择'},preview: {button: '查看'}}
};

index.js

'use strict';exports.__esModule = true;
exports.i18n = exports.use = exports.t = undefined;var _zhCN = require('./lang/zh-CN');var _zhCN2 = _interopRequireDefault(_zhCN);var _vue = require('vue');var _vue2 = _interopRequireDefault(_vue);var _deepmerge = require('deepmerge');var _deepmerge2 = _interopRequireDefault(_deepmerge);var _format = require('element-ui/lib/locale/format');var _format2 = _interopRequireDefault(_format);function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }var format = (0, _format2.default)(_vue2.default);
var lang = _zhCN2.default;
var merged = false;
var i18nHandler = function i18nHandler() {var vuei18n = Object.getPrototypeOf(this || _vue2.default).$t;if (typeof vuei18n === 'function' && !!_vue2.default.locale) {if (!merged) {merged = true;_vue2.default.locale(_vue2.default.config.lang, (0, _deepmerge2.default)(lang, _vue2.default.locale(_vue2.default.config.lang) || {}, { clone: true }));}return vuei18n.apply(this, arguments);}
};
var t = exports.t = function t(path, options) {var value = i18nHandler.apply(this, arguments);if (value !== null && value !== undefined) return value;var array = path.split('.');var current = lang;for (var i = 0, j = array.length; i < j; i++) {var property = array[i];value = current[property];if (i === j - 1) return format(value, options);if (!value) return '';current = value;}return '';
};var use = exports.use = function use(l) {lang = l || lang;
};var i18n = exports.i18n = function i18n(fn) {i18nHandler = fn || i18nHandler;
};exports.default = { use: use, t: t, i18n: i18n };

二、封装i18n对象

结构如下

index.js

import Vue from 'vue';
import VueI18n from 'vue-i18n';
import elementLocale from 'element-ui/lib/locale';import elementCnLocale from 'element-ui/lib/locale/lang/zh-CN'; // element-ui lang
import elementEnLocale from 'element-ui/lib/locale/lang/en'; // element-ui lang
import cnLocale from './lang/cn';
import enLocale from './lang/en';
import spuiEnLocale from 'lib/locale/lang/en';
import spuiCnLocale from 'lib/locale/lang/zh-CN';
import spuiLocale from 'lib/locale/index.js';const messages = {en: {...elementEnLocale,...enLocale,...spuiEnLocale},cn: {...elementCnLocale,...cnLocale,...spuiCnLocale}
};Vue.use(VueI18n);const i18n = new VueI18n({locale: 'cn',fallbackLocale: 'cn',messages
});// fix element-ui language switching issue.
elementLocale.i18n((key, value) => i18n.t(key, value));
spuiLocale.i18n(function(key, value) {return i18n.t(key, value);
});export default i18n;

cn/index.js

export default {common: {merchantPlatform: '商户平台',search: '查询',clear: '清除',prev: '上一步',next: '下一步',done: '完成',batchCopy: '一键复制',currency: '币种',back: '返回',submit: '提交',confirm: '确认',add: '添加',delete: '删除',edit: '编辑',notify: '通知',noLoginName: '未登录',logout: '账号登出',changePwd: '修改密码',total: '总计',language: '语言设置',languageList: [{value: 'en',label: 'English'},{value: 'cn',label: '中文'}],gotIt: '知道了',tableNoData: '暂无数据',tableNoDataSubtext: '提示:建议核实筛选条件',talbeLoadingData: '搜索中...',homeLoadingTitle: '正在加载资源',homeLoadingSubTitle: '初次加载资源可能需要较多时间 请耐心等待',action: '操作',save: '保存',cancel: '取消',saveSuccessTip: '保存成功!',deleteSuccessTip: '删除成功',yes: '是',no: '否',nonactivated: '未开通',required: '必填',view: '查看',agree: '同意',disagree: '不同意',notice: '公告通知',workOrderNotice: '工单通知',timeZone: '时区',mailLanguage: '邮件语言: ',mailLanguageTitle: '选择邮件语言',mailLanguageContent: '所有与您绑定的商户,都将以该语言给您发送邮件。',noContractSigned: '当前账户未开通该业务合同,请您联系PayerMax商务负责人获取进一步帮助',copySuccessfully: '复制成功',copyFailed: '复制失败:您可尝试单击右键进行复制',require: '必填',to: '-',today: '今天',yesterday: '昨天',last7Days: '过去7天',last30Days: '过去30天',placeholderStartDate: '开始日期',placeholderEndDate: '结束日期',applyRefundDes_1: '系统正在处理,请稍后查询。受理成功后,款项预计',applyRefundDes_2: '返回至原支付账户中。',approvalArrivalTimeMap: { 0: '将立刻', 1: '将在1天', 2: '将在10天内', 3: '' },reupload: '重新上传',download: '导出',export: '导出',create: '创建',showDetail: '详情',pixiuDetail: '详情',success: '成功',unit: '笔',units: '笔',all: '全部',timeZoneSetting: '时区设置:',timeZoneDefault: '默认',timeZoneSelectHint: '时区筛选',platformTimeZoneList: [{ value: 'UTC', label: 'UTC +0:00', offset: 0, city: '   世界标准时间', countryCode: 'UTC', zoneName: 'UTC' },{ value: 'UTC +4:00  GST', label: 'UTC +4:00', offset: 240, city: '  迪拜(阿联酋)', countryCode: 'AE', zoneName: 'Asia/Dubai' },{ value: 'UTC +3:00  MSK', label: 'UTC +3:00', offset: 180, city: '  莫斯科(俄罗斯)', countryCode: 'RU', zoneName: 'Europe/Moscow' },{ value: 'UTC +2:00  CAT', label: 'UTC +2:00', offset: 120, city: '  开罗(埃及)', countryCode: 'EG', zoneName: 'Africa/Cairo' },{ value: 'UTC +8:00  PHT', label: 'UTC +8:00', offset: 480, city: '  马尼拉(菲律宾)', countryCode: 'PH', zoneName: 'Asia/Manila' },{ value: 'UTC +8:00  MYT', label: 'UTC +8:00', offset: 480, city: '  古晋(马来西亚)', countryCode: 'MY', zoneName: 'Asia/Kuala_Lumpur' },{ value: 'UTC +2:00  SAST', label: 'UTC +2:00', offset: 120, city: '  约翰内斯堡(南非)', countryCode: 'ZA', zoneName: 'Africa/Johannesburg' },{ value: 'UTC +3:00  AST', label: 'UTC +3:00', offset: 180, city: '  利雅得(沙特)', countryCode: 'SA', zoneName: 'Asia/Riyadh' },{ value: 'UTC +8:00  SGT', label: 'UTC +8:00', offset: 480, city: '  新加坡(新加坡)', countryCode: 'SG', zoneName: 'Asia/Singapore' },{ value: 'UTC +5:30  IST', label: 'UTC +5:30', offset: 330, city: '  加尔各答(印度)', countryCode: 'IN', zoneName: 'Asia/Calcutta' },{ value: 'UTC +7:00  WIB', label: 'UTC +7:00', offset: 420, city: '  雅加达(印度尼西亚)', countryCode: 'ID', zoneName: 'Asia/Jakarta' },{ value: 'UTC +8:00  CST', label: 'UTC +8:00', offset: 480, city: '  北京(中国)', countryCode: 'CN', zoneName: 'Asia/Shanghai' },{ value: 'UTC -3:00  BRT', label: 'UTC -3:00', offset: -180, city: '  圣保罗(巴西)', countryCode: 'BR', zoneName: 'America/Sao_Paulo' },{ value: 'UTC +3:00  TRT', label: 'UTC +3:00', offset: 180, city: '  伊斯坦布尔(土耳其)', countryCode: 'TR', zoneName: 'Europe/Istanbul' }],faq: {label: '常见问题',testUrl: 'https://docs-dev.shareitpay.in/#/2?page_id=178&si=1&lang=zh-cn',prodUrl: 'https://docs.payermax.com/#/12?page_id=180&si=1&lang=zh-cn',},helpList: [{label: '文档中心',testUrl: 'https://docs-dev.shareitpay.in/#/2?page_id=4&si=1&lang=zh-cn',prodUrl: 'https://docs.payermax.com/#/30?page_id=580&si=1&lang=zh-cn',},{label: '帮助中心',url: '',}],documentUrlInfo: {testUrl: 'https://docs.payermax.com/#/12?page_id=81&si=1&lang=cn',prodUrl: 'https://docs.payermax.com/#/30?page_id=580&si=1&lang=zh-cn',},datePick: {tip: '时间跨度最大支持31天'},downloadEmail: {title: '数据处理中',submit: '好的',message: '数据处理完成后,我们会将导出文件发送至您的邮箱 <span class="waring">%{email}</span>,请注意查收。'},accountSubject: '账户主体',securityVerification: '用户安全登录验证',securityOpen: '已开启',securityClosed: '已关闭',deleteMerchantDes: '设为默认,账号登录后默认打开此商户号',defaultMerchantGroupsDes: '设为默认,账号登录后默认打开此商户群组',createGroup: '创建商户群组',switchTommc: '切换至商户平台运营',notification: '公告通知',documentCenter: '文档中心',paymentMethodType: '支付方式类型',},route: {unknown: '未命名菜单',dashboard: '仪表盘',overview: '概览',group: '群组管理',banlnce: '账户余额',balanceTotal: '余额汇总',incomeDetail: '收支明细',merchant: 'merchant',report: '报告',disbursement: '出款查询',reportHistory: '导出记录',transaction: '收单管理',orderSearch: '订单查询',orderDetail: '订单详情',},responseError: {error602: {title: '确定登出',content: '您已被登出,请重新登录',okStr: '重新登录',},error603: {title: '提示',okStr: '重新登录',},errorCodeList: [{ value: '600', label: '用户账号不存在' },{ value: '601', label: '账号名或密码错误' },{ value: '603', label: '获取权限异常,建议重新登录' },{ value: '604', label: '验证失败过多,账号已锁定,请重设密码' },],unknownError: '未知错误'}
};

en/index.js

export default {common: {merchantPlatform: 'Merchant Platform',search: 'Search',clear: 'Clear',prev: 'Back',done: 'Done',batchCopy: 'Copy All',currency: 'Currency',next: 'Next',back: 'Back',submit: 'Submit',confirm: 'Confirm',add: 'Add',delete: 'Delete',edit: 'Edit',notify: 'Notify',noLoginName: 'No Login',logout: 'Sign Out',changePwd: 'Change Password',total: 'Total',language: 'Language Settings',languageList: [{value: 'en',label: 'English'},{value: 'cn',label: '中文'}],gotIt: 'Got it',tableNoData: 'No data',tableNoDataSubtext: 'Tip: Suggest to recheck your filter.',talbeLoadingData: 'Searching...',homeLoadingTitle: 'Loading...',homeLoadingSubTitle: 'It may take more time to load the resource for the first time. Please wait patiently.',action: 'Action',save: 'Save',cancel: 'Cancel',saveSuccessTip: 'Save successfully!',deleteSuccessTip: 'Delete successfully!',yes: 'Confirm',no: 'Cancel',nonactivated: 'Nonactivated',required: 'Required',view: 'View',agree: 'Agree',disagree: 'Disagree',notice: 'Notification',timeZone: 'Time Zone',mailLanguage: 'Email Language: ',mailLanguageTitle: 'Select Email Language',mailLanguageContent: 'All merchants that are bound to you will send you an email in this language.',noContractSigned: 'There is no contract under the current account, please contact the PayerMax business development for further assistance.',copySuccessfully: 'Copy successfully',copyFailed: 'Copy failed: Please try right-click and select Copy',require: 'Required',to: '-',today: 'Today',yesterday: 'Yesterday',last7Days: 'Last 7 days',last30Days: 'Last 30 days',placeholderStartDate: 'Start Date',placeholderEndDate: 'End Date',applyRefundDes_1: 'Wait for some time, system is processing. Once the refund is processed, the money will be sent to the original payment source',applyRefundDes_2: '.',approvalArrivalTimeMap: { 0: ' immediately', 1: ' within 1 working day', 2: ' within 10 working days', 3: '' },reupload: 'Re-upload',download: 'Download',export: 'Export',create: 'Create',showDetail: 'Detail',pixiuDetail: 'Details',success: 'Success',unit: 'order',units: 'orders',all: 'All',timeZoneSetting: 'Timezone Setting: ',timeZoneDefault: 'Default',timeZoneSelectHint: 'Time Zone Filter',platformTimeZoneList: [{ value: 'UTC', label: 'UTC +0:00', offset: 0, city: '   Universal Time Coordinated', countryCode: 'UTC', zoneName: 'UTC' },{ value: 'UTC +4:00  GST', label: 'UTC +4:00', offset: 240, city: '  Dubai(United Arab Emirates)', countryCode: 'AE', zoneName: 'Asia/Dubai' },{ value: 'UTC +3:00  MSK', label: 'UTC +3:00', offset: 180, city: '  Moscow(Russia)', countryCode: 'RU', zoneName: 'Europe/Moscow' },{ value: 'UTC +2:00  CAT', label: 'UTC +2:00', offset: 120, city: '  Cairo(Egypt)', countryCode: 'EG', zoneName: 'Africa/Cairo' },{ value: 'UTC +8:00  PHT', label: 'UTC +8:00', offset: 480, city: '  Manila(Philippines)', countryCode: 'PH', zoneName: 'Asia/Manila' },{ value: 'UTC +8:00  MYT', label: 'UTC +8:00', offset: 480, city: '  Kuching(Malaysia)', countryCode: 'MY', zoneName: 'Asia/Kuala_Lumpur' },{ value: 'UTC +2:00  SAST', label: 'UTC +2:00', offset: 120, city: '  Johannesburg(South Africa)', countryCode: 'ZA', zoneName: 'Africa/Johannesburg' },{ value: 'UTC +3:00  AST', label: 'UTC +3:00', offset: 180, city: '  Riyadh(Saudi Arabia)', countryCode: 'SA', zoneName: 'Asia/Riyadh' },{ value: 'UTC +8:00  SGT', label: 'UTC +8:00', offset: 480, city: '  Singapore(Singapore)', countryCode: 'SG', zoneName: 'Asia/Singapore' },{ value: 'UTC +5:30  IST', label: 'UTC +5:30', offset: 330, city: '  Kolkata(India)', countryCode: 'IN', zoneName: 'Asia/Calcutta' },{ value: 'UTC +7:00  WIB', label: 'UTC +7:00', offset: 420, city: '  Jakarta(Indonesia)', countryCode: 'ID', zoneName: 'Asia/Jakarta' },{ value: 'UTC +8:00  CST', label: 'UTC +8:00', offset: 480, city: '  Beijing(China)', countryCode: 'CN', zoneName: 'Asia/Shanghai' },{ value: 'UTC -3:00  BRT', label: 'UTC -3:00', offset: -180, city: '  Sao Paulo(Brazil)', countryCode: 'BR', zoneName: 'America/Sao_Paulo' },{ value: 'UTC +3:00  TRT', label: 'UTC +3:00', offset: 180, city: '  Istanbul(Turkey)', countryCode: 'TR', zoneName: 'Europe/Istanbul' }],faq: {label: 'FAQ',testUrl: 'https://docs-dev.payermax.com/#/2?page_id=178&si=1&lang=en',prodUrl: 'https://docs.payermax.com/#/12?page_id=180&si=1&lang=en',},helpList: [{label: 'Documents',testUrl: 'https://docs-dev.payermax.com/#/2?page_id=4&si=1&lang=en',prodUrl: 'https://docs.payermax.com/#/30?page_id=580&si=1&lang=zh-en',},{label: 'Support',url: '',hidden: true}],documentUrlInfo: {testUrl: 'https://docs.payermax.com/#/30?page_id=580&si=1&lang=zh-en',prodUrl: 'https://docs.payermax.com/#/30?page_id=580&si=1&lang=zh-en',},datePick: {tip: 'Date range up to 31 days'},downloadEmail: {title: 'Data processing',submit: 'OK',message: 'We will send the export to <span class="waring">%{email}</span> when it\'s completed, please check it later.'},accountSubject: 'Account Subject',securityVerification: 'User security login verification',securityOpen: 'Enabled',securityClosed: 'Closed',deleteMerchantDes: 'Set as default, this merchant account will be displayed after account login',defaultMerchantGroupsDes: 'Set as default, this merchant group account will be displayed after account login',createGroup: 'Create Group',switchTommc: 'Switch to Merchant Platform',notification: 'Notification',documentCenter: 'Document Center',paymentMethodType: 'Payment Method Type',},route: {unknown: 'unknown menu',dashboard: 'Dashboard',overview: 'Dashboard',banlnce: 'Banlnce',balanceTotal: 'Balance Summary',incomeDetail: 'Account Turnover',group: 'Group',report: 'Report',disbursement: 'Disbursement',reportHistory: 'Export Records',merchant: 'merchant',transaction: 'Payment',orderSearch: 'Order Search',orderDetail: 'Order Detail',},responseError: {error602: {title: 'Logout',content: 'Your session has expired, please login again.',okStr: 'Click to Sign in',},error603: {title: 'Hint',okStr: 'Click to Sign in',},errorCodeList: [{ value: '600', label: 'The user account is not exits.' },{ value: '601', label: 'User ID or Password is incorrect.' },{ value: '603', label: 'Something wrong with accessing permission. Suggest to sign in again.' },],unknownError: 'Unknown error.'}
};

三、在VUE中引入 main.js

import i18n from './i18n';const vue = new Vue({router,store,i18n,created() {injectBeyla();},mounted() {util.init();},render: h => h(App),
}).$mount('#app');

四、在页面中使用

  <ProblemDescription :title="$t(`workOrderInfo.yourLocalReceivingAccountNumber`)" /><el-button @click="goBack">{{ $t('workOrderInfo.return') }}</el-button>{prop: 'status',labelKey: 'workOrderInfo.workOrderStatus',minWidth: 130,render(h, row) {const type = setStatus(row.status, this.language) || '';return <div>{row.status == 'PROCESS' && <div style='color: rgba(251, 151, 1, 1);padding: 4px 12px;border-radius: 14px;background: rgba(255, 241, 215, 1);'>{type || '-'}</div>}{row.status == 'FINISHED' && <div style='color: rgba(0, 195, 82, 1);padding: 4px 12px;border-radius: 14px;background: rgba(230, 249, 239, 1);'>{type || '-'}</div>}</div>;}},import local from './local';const SCOPE_NAME = 'workOrderInfo';created() {if (!this.$i18n.getLocaleMessage('en')[SCOPE_NAME]) {this.$i18n.mergeLocaleMessage('en', local.en);this.$i18n.mergeLocaleMessage('cn', local.cn);}},this.tipMessage(this.$t('workOrderInfo.orderExisting'));

local.js

export default {cn: {workOrderInfo: {orderExisting: '该订单已经创建咨询,请刷新页面',mustSelectAContent: '必须选择一项内容',fileCount: '当前限制最多上传 5 个文件!',}},en: {workOrderInfo: {orderExisting: 'The order has been created, please refresh the page',mustSelectAContent: 'One item must be selected',fileCount: 'The current limit allows for a maximum of 5 files to be uploaded!',}}
};

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

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

相关文章

冯喜运:5.8黄金原油今日行情走势及最新操作建议

【黄金消息面分析】&#xff1a;金价周三&#xff08;5月8日&#xff09;亚市小幅走弱&#xff0c;现货黄金一度下跌0.3%至2306.94美元/盎司附近&#xff0c;市场参与者在等待美联储官员提供新的线索&#xff0c;以进一步明确潜在的降息时间表&#xff0c;同样在黄金日线图中&a…

【Web前端】盒子模型_元素分类_表格

1、盒子模型 1.1简介 CSS盒子模型是在网页设计中经常用到的CSS技术所使用的一种思维模型。包括内容(content)、内边距(padding)、边框(border)、外边距(margin) 1.2边框&#xff08;border&#xff09; 1.2.1简介 边框是环绕内容区和填充的边界。边框的属性有border-style、…

C++——list和string

list与string 前言一、listlist.hList的节点类List的迭代器类list类list.h 完整实现 list.cppList的节点类List的迭代器类list类list.cpp 完整实现 二、stringstring.hstring.cpp 总结 前言 C容器的学习开始啦&#xff01; 大家先来学习list&#xff01; 紧接着string和vector…

C#高级编程笔记-泛型

本章的主要内容如下&#xff1a; ● 泛型概述 ● 创建泛型类 ● 泛型类的特性 ● 泛型接口 ● 泛型结构 ● 泛型方法 目录 1.1 泛型概述 1.1.1 性能 1.1.2 类型安全 1.1.3 二进制代码的重用 1.1.4 代码的扩展 1.1.5 命名…

基于随机森林与支持向量机的高光谱图像分类(含python代码)

目录 一、背景 二、代码实现 三、项目代码 一、背景 基于深度学习的教程&#xff08;卷积神经网络&#xff09;详见&#xff1a;基于卷积神经网络的高光谱图像分类详细教程&#xff08;含python代码&#xff09;-CSDN博客 在高光谱图像分类领域&#xff0c;随机森林&#…

「JavaEE」多线程案例1:单例模式阻塞队列

多线程案例分析 单例模式饿汉模式懒汉模式指令重排序 阻塞队列生产者消费者模型实现阻塞队列 单例模式 单例模式是一种设计模式。所谓“单例”&#xff0c;就是只有一个实例 如果某个类在一个进程中只应该创建出一个实例&#xff08;或者说原则上不应该有多个&#xff09;&…

PostgreSQL自带的命令行工具13- pg_waldump

PostgreSQL自带的命令行工具13- pg_waldump 基础信息 OS版本&#xff1a;Red Hat Enterprise Linux Server release 7.9 (Maipo) DB版本&#xff1a;16.2 pg软件目录&#xff1a;/home/pg16/soft pg数据目录&#xff1a;/home/pg16/data 端口&#xff1a;5777pg_waldump 是 Po…

目标检测CNN 目标检测发展历程 应用场景 智慧交通 自动驾驶 工业生产 智慧医疗

目标检测 目标检测是计算机视觉领域中的一个重要任务,其主要目的是让计算机能够自动识别图像或视频帧中所有目标的类别,并在目标周围绘制边界框以标示出每个目标的位置。 目标检测的过程通常包括两个主要步骤:目标定位和目标分类。目标定位是确定图像中是否存在感兴趣的目…

51单片机keil编程中遇到的问题(持续更新)

字符无法打印报错 查看特殊功能寄存器名字的时候也会报错&#xff0c;因为无法编译通过&#xff0c;导致头文件的定义内容无法查找 keil编译中 error C127: ‘xx’: invalid storage class 这种一般是在编写头文件或源文件时&#xff0c;在声明函数的结尾没有添加分号&…

SOCKET编程(1):基本概念

基本概念 socket分类 socket提供了**流(stream)和数据报(datagram)**两种通信机制&#xff0c;即流socket和数据报socket 流socket基于TCP协议&#xff0c;是一个有序、可靠、双向字节流的通道&#xff0c;传输数据不会丢失、不会重复、顺序也不会错乱 数据报socket基于UDP…

今天遇到一个GPT解决不了的问题

问题描述 你好&#xff0c;postman的一个post请求&#xff0c;编辑器里面放了一个很长的json数据&#xff0c;报Tokenization is skipped for long lines for performance reasons. This can be configured via editor.maxTokenizationLineLength.&#xff0c;但是同样的数据&a…

Star15.3k,开源数据可视化分析工具项目

好东西来了&#xff0c;这是一个人人可用的开源数据可视化分析工具项目&#xff0c;V 哥迫不及待的要给大家推荐这个项目&#xff0c;帆软、Tableau 等商业 BI 工具的开源替代&#xff0c;已在 Github 上被 Star了15.3k了&#xff0c;大家一起来了解一下。自己搭建起来可用&…

QSplitter分裂器的使用方法

1.QSplitter介绍 QSplitter是Qt框架提供的一个基础窗口控件类&#xff0c;主要用于分割窗口&#xff0c;使用户能够通过拖动分隔条来调节子窗口的大小。 2.QSplitter的添加方法 &#xff08;1&#xff09;通过Qt Creator的界面设计工具添加&#xff1b; &#xff08;2&#xf…

DrissionPage

声明 本文章中所有内容仅供学习交流使用&#xff0c;不用于其他任何目的&#xff0c;不提供完整代码&#xff0c;抓包内容、敏感网址、数据接口等均已做脱敏处理&#xff0c;严禁用于商业用途和非法用途&#xff0c;否则由此产生的一切后果均与作者无关&#xff01;本文章未经许…

RUST 编程语言使构建更安全的软件变得更加容易。RUST ALL THE THINGS 需要什么?

人不走空 &#x1f308;个人主页&#xff1a;人不走空 &#x1f496;系列专栏&#xff1a;算法专题 ⏰诗词歌赋&#xff1a;斯是陋室&#xff0c;惟吾德馨 目录 &#x1f308;个人主页&#xff1a;人不走空 &#x1f496;系列专栏&#xff1a;算法专题 ⏰诗词歌…

机器学习:基于K-近邻(KNN)、高斯贝叶斯(GaussianNB)、SVC、随机森林(RF)、梯度提升树(GBDT)预测葡萄酒质量

前言 系列专栏&#xff1a;机器学习&#xff1a;高级应用与实践【项目实战100】【2024】✨︎ 在本专栏中不仅包含一些适合初学者的最新机器学习项目&#xff0c;每个项目都处理一组不同的问题&#xff0c;包括监督和无监督学习、分类、回归和聚类&#xff0c;而且涉及创建深度学…

车辆充电桩|基于Springboot+vue的车辆充电桩管理系统的设计与实现(源码+数据库+文档)

车辆充电桩管理系统 目录 基于Springboot&#xff0b;vue的车辆充电桩管理系统设计与实现 一、前言 二、系统设计 三、系统功能设计 1 前台功能模块 4.1.1 首页功能 4.1.2 用户后台管理 2 后台功能模块 4.2.1 管理员功能 4.2.2 维修员功能 四、数据库设计 五、核…

公众号流量主的收益怎么样?

公众号之前是一个私域平台&#xff0c;没有粉丝基本是没有推荐的&#xff0c;所以之前入门的门槛还是很高的&#xff0c;但是今年公众号和视频号改变了推流的机制&#xff0c;现在发的文章会进入到流量池中&#xff0c;进入到公域流量&#xff0c;所以发布的优质文章会大爆的&a…

演唱会新风:允许部分歌手闭麦,让观众先唱

演唱会市场的热度从2023年延续至今&#xff0c;出现了一些“倒反天罡”的现象。 例如&#xff1a;让歌迷在台下给歌手唱歌。 5月6日抖音娱乐榜第一的消息是“第一次见辟谣观众没假唱的”。原因是凤凰传奇在常州和北京鸟巢先后举办两场演唱会&#xff0c;其中鸟巢演唱会被认为…

工程技术SCI期刊,中科院三区,一投就中,国人友刊!

一、期刊名称 Industrial Management & Data Systems 二、期刊简介概况 期刊类型&#xff1a;SCI 学科领域&#xff1a;工程技术 影响因子&#xff1a;5.5 中科院分区&#xff1a;3区 出版方式&#xff1a;订阅模式/开放出版 版面费&#xff1a;$4120 三、期刊征稿范…