1. Accept-language

优先级:1 > 2 > 3

  • 默认回滚

目标语言 > 英文 > 简体中文

👉能力说明

实现自动适配多语言功能

👉代码示例

  • 获取目标语言的方法

 export function getTargetLang(isSet?: boolean): string {
  if (window.__KDRIVE_INTERNATIONALITY_LANG__) {
    return window.__KDRIVE_INTERNATIONALITY_LANG__;
  }

  const urlLanguage = getUrlParams('lang'); // 最高优先级的语言:URL lang参数
  const cookieLanguage = getCookie('lang'); // 获取cookie中的lang
  const navigatorLanguage = window.navigator.language; // 获取浏览器语言
  let current: string = (urlLanguage || cookieLanguage || navigatorLanguage)?.toLocaleLowerCase();
  const isLanguageExist = !!current; // 是否配置了language

  switch (current) {
    case 'zh-hk':
    case 'zh-tw':
    case 'zh-mo':
      current = LANGUAGE_ENUM.ZH_HK;
      break;
    case 'zh-cn':
    case 'zh':
      current = LANGUAGE_ENUM.ZH_CN;
      break;
    default:
      current = isLanguageExist ? LANGUAGE_ENUM.EN_US : LANGUAGE_ENUM.ZH_CN;
      break;
  }

  if (isSet) {
    setCookie({
      key: 'lang',
      value: current === LANGUAGE_ENUM.ZH_HK ? LANGUAGE_ENUM.ZH_TW : current,
    });
  }

  window.__KDRIVE_INTERNATIONALITY_LANG__ = current;

  return current;
}
  • 配置翻译资源
H2WY2WY5ACQEI
  • en-US.json
{
  "menu": {
    "title": "Cross-network File Transfer",
    "description":"File Intranet/Extranet Transfer Tool"
  }
}
  • zh-CN.json

{
  "menu": {
    "title": "跨网文件传输",
    "description":"文件内外网传输工具"
  }
}
  • zh-HK.json

{
  "menu": {
    "title": "跨網文件傳輸",
    "description":"檔案內外網傳輸工具"
  }
}

多语言适配的初始化配置


import i18n from 'i18next';
import { initReactI18next } from 'react-i18next';
import us from './locales/en-US.json';
import cn from './locales/zh-CN.json';
import hk from './locales/zh-HK.json';
import { getTargetLang } from './utils/util';
/*
LANGUAGE_ENUM配置
export enum LANGUAGE_ENUM {
  ZH_CN = 'zh-CN',
  ZH_HK = 'zh-HK',
  EN_US = 'en-US',
  ZH_TW = 'zh-TW',
}
*/
import { LANGUAGE_ENUM } from '../../types/global';

// 获取目标语言
const targetLang = getTargetLang();

i18n.use(initReactI18next).init({
  resources: {
    [LANGUAGE_ENUM.EN_US]: { translation: us },
    [LANGUAGE_ENUM.ZH_CN]: { translation: cn },
    [LANGUAGE_ENUM.ZH_HK]: { translation: hk },
  },
  lng: targetLang,
  fallbackLng: LANGUAGE_ENUM.ZH_CN,
  supportedLngs: [LANGUAGE_ENUM.ZH_CN, LANGUAGE_ENUM.ZH_HK, LANGUAGE_ENUM.EN_US],
});

export default i18n;
  • 功能实现
  1. 在入口文件导入多语言适配的初始化配置文件
  2. 实现
  • 方案一:使用 i18next 的 t 方法实现

import i18n from 'i18next';

const kdrive = await sdk.kdrive;
kdrive.header.onMounted((data: any) => {
  data.isShow = true;
  data.appList.add({
    icon: folderImg,
    title: i18n.t('menu.title'),
    description: i18n.t('menu.description'),
    key: 'transform1',
  });
});
  • 方案二:在React中使用 react-i18next 的 useTranslation 方法

import React, { useEffect } from 'react';
import { useTranslation } from 'react-i18next';
import sdk from '../libs/sdk';
import folderImg from '../assets/filetransfer.png';

const Plugin = () => {
  const { t } = useTranslation();

  const addEntrance = async () => {
    // 这里插件按需异步加载资源报引入sdk.xxx
    const kdrive = await sdk.kdrive;
    kdrive.header.onMounted((data: any) => {
      data.isShow = true;
      data.appList.add({
        icon: folderImg,
        title: t('menu.title'),
        description: t('menu.description'),
        key: 'transform1',
      });
    });
  };

  useEffect(() => {
    addEntrance();
  }, []);

  return null;
};

export default React.memo(Plugin);

👉效果截图

  • 简体中文
G66LIWY5ADQCC
  • 英文
D2RLGWY5ADABO
  • 繁体中文
TFK3IWY5ABQAA

相关新闻

  • 文档中心主题皮肤定制

    文档中心主题皮肤定制

    将企业主题色融入WPS365产品界面,使之与企业风格更为统一 如何为文档中心定制主题皮肤? 本定制方案仅适用于私有化WPS365版本 1. 方案概述 主题皮肤就是文档中心提供的界面颜色,下图为文档中心标准产品的主题皮肤: 出于以下需求的考虑,客户可能会需要定制个性化的主题皮肤: 实现效果 深色模式浅色模式护眼模式跟随系统模式注:以上展示的【深色】【浅色】【护眼】模式的具体颜色效果由客户自己定义,上图仅作参考示例 依赖端 文档中心PC端 依赖版本 23.0907(含)以上 依赖操作系统 支持X86…

    最佳实践 2025年12月11日
  • 登录密码页和访问到期页定制

    登录密码页和访问到期页定制

    针对设有密码的文件夹,企业可以定制密码登录页及访问到期页

    最佳实践 2025年12月11日
  • 双因子认证

    双因子认证

    企业出于安全考虑,需要在修改功能或登录密级较高的页面时,对成员进行二次身份校验 企业需要双因子认证时,可以怎么操作? 该组件仅适用于私有化WPS365版本 1. 方案概述 一般来讲,用户登录的安全认证分为两种: 文档中心使用的是单因子认证的方式。 出于安全考虑,企业需要在修改定制应用功能前,比如修改消息审计、全局配置前。 或登录密级较高的页面时,对成员进行二次身份校验。 针对这种情况,我们可以使用文档中心管理后台的开放能力,定制双因子认证 实现效果 用户登录管理后台时,页面会跳出窗口,提醒用户绑…

    最佳实践 2025年12月11日
  • 自定义云文档操作项

    自定义云文档操作项

    响应企业安全、效率需求,屏蔽、禁用、拦截、扩展云文档的导入导出等操作。 如何屏蔽\禁用\拦截\扩展文件操作项? 本定制方案仅适用于私有化WPS365版本 1. 方案概述 文档中心里,这些“新建”“导入”“上传”“导出”“分享”等按钮,都是文件操作项,企业用户可以使用这些按钮操作文件。 有些企业可能出于安全、效率等需求,希望屏蔽\禁用、拦截、扩展部分文件操作项。 屏蔽\禁用 指的是企业担心文档泄漏,希望完全禁止企业用户下载文档,想屏蔽\禁用WPS文档中心的下载按钮。屏蔽:指“操作项完全不可见”禁用…

    最佳实践 2025年12月11日
  • 自定义文件列表右键菜单项

    自定义文件列表右键菜单项

    企业需要在文件列表的右键菜单栏中,新增其它定制菜单项 如何在文件列表新增右键菜单项? 本定制方案仅适用于私有化WPS365版本 1. 方案概述 有时候,企业需要给不在组织通讯录中的成员共享文档,传统流程是把文档下载下来,通过邮件发送,易导致效率瓶颈。 现在,通过文档中心的扩展能力,可以直接在文件列表右键菜单新增自定义分享弹窗入口,简化协作流程。 这一功能不仅支持自定义分享弹窗,企业也可根据实际需要,在文件列表的右键菜单栏中,新增其它定制菜单项。 我们可以使用文档中心Web端(PC端)的开放能力,…

    最佳实践 2025年12月11日
  • 文档中心欢迎页定制

    文档中心欢迎页定制

    在文档中心登录前进行品牌展示,为满足企业或组织的的个性化需求 如何为文档中心定制欢迎页? 该组件仅适用于私有化WPS365版本 1. 方案概述 欢迎页是由客户自己设计和定义的独立页面,可以在文档中心登录前进行品牌展示。 总的来说,欢迎页的内容客户可以根据自己的需求自行设计,通常比较高频的使用方式有: 如果没有定制欢迎页,客户在登录文档中心时,会直接进入文档中心登录页,输入账号和密码进行登录。 客户定制了文档中心欢迎页之后,遇到需要登录的场景,会先跳转进入企业欢迎页,在欢迎页进行相关操作(例如:点…

    最佳实践 2025年12月11日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

立即咨询 企业版试用 上门服务

请您留言

感谢您的关注,你可留下联系方式,我们将第一时间与您联系。