You need to enable JavaScript to run this app.
导航

文案单独拉取

最近更新时间2022.01.10 15:03:59

首次发布时间2022.01.10 15:03:59

  • 如果使用的不是 i18next 框架,但依旧要用到我们的国际化平台托管文案,我们也支持单独的文案拉取功能,下列文案拉取的参数同公共配置中的backend

web端

import WebBackend from '@volcengine/i18n/dist/backend/web'
const web = new WebBackend({...})
web.load('zh', (err, data) => {
  // data 数据结构:{ key: value }
})
// 然后注入到对应的intl框架中

node端

import NodeBackend from '@volcengine/i18n/dist/backend/node'
const node = new WebBackend({...})
node.load('zh', (err, data) => {
  // data 数据结构:{ key: value }
})
// 然后注入到对应的intl框架中

自定义场景扩展

自定义扩展必须实现以下四个方法

auth

获取签名接口

method: POST

参数

参数名描述
url鉴权文案接口地址
callback(err, data) => void,有错误传err,正常请求传data,data结构: string

fetch

拉取文案核心方案

method: GET

参数

参数名描述
url拉取文案接口地址
headers主要是 { Authorization: '' } 用于接口鉴权,需要放于请求头中
callback(err, data) => void,有错误传err,正常请求传data,data结构: { key: value }

setCache

保存文案进本地缓存,可以同时存入一个过期时间

参数

参数名描述
key缓存key
valuevalue结构: { key: value }

getCache

获取本地缓存

参数

参数名描述
key缓存key
callback(err, data) => void,有错误传err,正常请求传data,data结构: { key: value }
import BaseBackend from '@volcengine/i18n/dist/backend/base'

class OtherBackend extends BaseBackend {
  fetch(url, headers, callback) {
    throw new StarlingError('fetch() needs to be implemented.')
  }

  auth(url, callback) {
    throw new StarlingError('auth() needs to be implemented.')
  }

  getCache(key: string, callback) {
    try {
      const { expiredTime, value } = JSON.parse(localStorage.getItem(key) || '{}')
      if (Date.now() - expiredTime < this.options.expiredTime && Object.keys(value).length) 			{
        return callback(null, value)
      }
      callback(null, undefined)
    } catch (error) {
      callback(error, undefined)
    }
  }

  setCache(key, value) {
    try {
      const data = { expiredTime: Date.now(), value }
      localStorage.setItem(key, JSON.stringify(data))
    } catch (error) {
      //
    }
  }
}