当前位置: 首页 > news >正文

阿里巴巴网站是用什么技术做的怎样在国外网站做推广

阿里巴巴网站是用什么技术做的,怎样在国外网站做推广,wordpress如何转换为中文版,深圳设计院有哪些痛点 在i18n多语言模块使用过程中#xff0c;发现下面几个问题#xff0c;需要解决 1#xff09;uni-best框架下#xff0c;$t功能函数无法实时的切换语言#xff0c;可能跟使用有关 2#xff09;uni-best建议的translate方式在vue块外使用太繁琐#xff0c;希望不用…痛点 在i18n多语言模块使用过程中发现下面几个问题需要解决 1uni-best框架下$t功能函数无法实时的切换语言可能跟使用有关 2uni-best建议的translate方式在vue块外使用太繁琐希望不用导入直接书写$t使用。统一逻辑减少复杂度 目标 需要完成的目标如下 1将多语言模块放到公共区域可能会导致原生标题无法正常切换语音。这个无所谓因为标题栏已经custom定制并组件化了 2修复无法正常实时切换语言的$t这个可能跟使用方式有关anyway让它能按原模式正常工作 3在任何地方都可以使用$t功能无论是template还是script部分 实现 uni-best的translate方法代码实现了一个很好的思路只是无法支持占位符的功能。让我们改进它 /*** 任意文件使用$t翻译方法需要在app里全局导入* param { string } localeKey 多语言的keyeg: app.name*/ export const translate (localeKey: string, opt: Recordstring, any {}) {if (!localeKey) {console.error([i18n] Function translate(), localeKey param is required)return }const locale uni.getLocale()const message messages[locale]if (Object.keys(message).includes(localeKey)) {const template message[localeKey]// 使用 Object.keys 遍历 params 对象替换模板中的大括号占位符return Object.keys(opt).reduce((acc, key) acc.replace(new RegExp({${key}}, g), opt[key]),template)}return localeKey // 转换不了则原样输出 }然后在main.ts里把它挂载到全局 import { message, alert, confirm, translate } from /utils...export function createApp() {const app createSSRApp(App)...app.use(i18n)app.config.globalProperties.$t translate // 覆盖不能正常工作的$t函数// #ifdef MP-WEIXIN// 由于微信小程序的运行机制问题需声明如下一行H5和APP非必填app.config.globalProperties._i18n i18n// #endifreturn {app} }至于在任意位置使用让我们把translate挂载到代码部分的全局 // 安装到全局覆盖不能正常工作的$t ;(function (global) {console.log(install);(global as any).$t translate })(this || window || globalThis) 下面是最终完成的i18n.ts模块添加了语言切换功能的导出。 API.tools.locale.request是后端的语言切换代码实现前后端语言统一切换目前只导入了3种语言需要其它语言可以自行增加 /*** ccframe i18n模块* 注意由于某种未知的原因uni-best的$t()翻译方法有无法切换语音以及安卓出错的问题因此使用导出的translate方法进行动态翻译* Jim 24/09/20*/import { createI18n } from vue-i18nimport en from /datas/en.json import zhHans from /datas/zh-Hans.json import zhHant from /datas/zh-Hant.jsonconst messages {en,zh-Hant: zhHant,zh-Hans: zhHans // key 不能乱写查看截图 screenshots/i18n.png }const i18n createI18n({legacy: false, // 解决空白报错问题locale: uni.getLocale(), // 获取已设置的语言fallback 语言需要再 manifest.config.ts 中设置messages })type LocaleType en | zh-Hant | zh-Hansi18n.global.locale.value import.meta.env.VITE_FALLBACK_LOCALE/*** 任意文件使用$t翻译方法需要在app里全局导入* param { string } localeKey 多语言的keyeg: app.name*/ export const translate (localeKey: string, opt: Recordstring, any {}) {if (!localeKey) {console.error([i18n] Function translate(), localeKey param is required)return }const locale uni.getLocale()const message messages[locale]if (Object.keys(message).includes(localeKey)) {const template message[localeKey]// 使用 Object.keys 遍历 params 对象替换模板中的大括号占位符return Object.keys(opt).reduce((acc, key) acc.replace(new RegExp({${key}}, g), opt[key]),template)}return localeKey // 转换不了则原样输出 }const langMapper: Recordstring, string {zh-Hans: zh-CN,zh-Hant: zh-TW,en: en-US }export const setLocale async (locale: LocaleType) {await API.tools.locale.request({ lang: langMapper[locale] })// #ifdef APP-PLUSsetTimeout(() {// 如果是APP需要等待重新启动页面i18n.global.locale.value localeuni.setLocale(locale)}, 300)// #endif// #ifndef APP-PLUSi18n.global.locale.value localeuni.setLocale(locale)// #endif// currentLang.value locale }// 安装到全局覆盖不能正常工作的$t ;(function (global) {console.log(install);(global as any).$t translate })(this || window || globalThis)export default i18n/** 非vue 文件使用 i18n export const testI18n () {console.log(t(app.name))// 下面同样生效uni.showModal({title: i18n 测试,content: t(app.name)}) } */然后就可以简单愉快的使用多语言功能了。 页面上$t(login.enterPhone)根据语言显示“输入手机号码” up-input fontSize32rpx :placeholder$t(login.enterPhone) bordersurround v-modeldata.userMobile styleletter-spacing: 2rpx changedata.mobileErr typenumber maxlength11 / 代码片段这个是form表单验证公共库里的使用   required(error?: string): Validator { this.push({ required: true, validator: (rule: any, val: any, callback: (error?: Error) void) { // 补充验证模式 return val ! undefined val ! null val ! }, message: error ?? (this.labelText ? $t(utils.validator.required) this.labelText : $t(utils.validator.notEmpty)), trigger: [change, blur] }) return this } $t(utils.validator.required)根据语言输出请输入 $t(utils.validator.notEmpty)根据语言输出内容不能为空 完善Typescript类型定义 这样使用起来还有那么一点不舒服就是在script中使用$t时会报错类型找不到红红的一片实际编译没问题。对于代码强迫症人会有点一点受不了那么让这个错误的爆红消失掉 unibest里原本带了i18n.d.ts文件把我们挂载到script全局的定义添加进去   /* eslint-disable no-unused-vars */ export {}declare module vue {interface ComponentCustomProperties {$t: (key: string, opt?: Recordstring, any) string// $tm: (key: string, opt?: Recordstring, any) [] | { [p: string]: any }} }declare global {function $t(localeKey: string, opt?: Recordstring, any): string }刷新一下vscode不爆红了完美~
http://www.w-s-a.com/news/868942/

相关文章:

  • 网站维护模式网页传奇游戏平台排行
  • 企业网站改自适应蛋糕方案网站建设
  • 网站开发技术职责网站升级中html
  • 天网网站建设百度权重高的网站
  • 明年做哪些网站致富网站站长 感受
  • 东莞营销网站建设优化怎么做微信网站推广
  • 网站建设一个多少钱php网站服务器怎么来
  • 引流用的电影网站怎么做2012服务器如何做网站
  • 什么网站可以做推广广州安全信息教育平台
  • 网站开发具备的相关知识wordpress简约文字主题
  • asp网站伪静态文件下载seo外包公司哪家好
  • 淘宝客网站根目录怎么建个废品网站
  • 网站备案更改需要多久百度免费网站空间
  • 外发加工是否有专门的网站wordpress主页 摘要
  • 企业网站优化系统浙江建设信息港证书查询
  • 很多年前的51网站如何做跨境电商需要哪些条件
  • 网站建设中 请稍后访问互联网营销设计
  • 软文网站名称用户浏览网站的方式
  • 大兴模版网站搭建哪家好网站建设与管理管理课程
  • 四川成都网站制作微信广告平台推广
  • 网站价格网页制作网站开发实训步骤
  • cms 导航网站鹤壁做网站价格
  • 微信营销软件免费版郑州关键词优化费用
  • 邢台专业做网站哪家好临沂网站建设中企动力
  • 建设网站是主营成本吗wordpress 后台
  • 猎头可以做单的网站企业网站建设
  • 建小程序需要网站吗在putty上怎样安装wordpress
  • 天津智能网站建设找哪家WordPress相册插件pro
  • 电脑网站页面怎么调大小济宁网站建设软件开发
  • 亿玛酷网站建设广州增城区最新消息