最近更新时间:2021.07.09 17:06:58
首次发布时间:2021.07.05 14:57:37
使用前请先确定已了解 Starling 产品的相关功能,已注册并加入到某个项目中,下文均以此为前提。Go语言版本1.13及以上。
Starling Golang SDK 在github开源方式提供,详见 https://github.com/volcengine/i18n-sdk-golang ,可通过如下方式下载安装:
go get -v github.com/volcengine/i18n-sdk-golang
获取当前待拉取文案的所在项目名称、空间名称和项目的appKey
,使用如下接口创建客户端:
import ( "context" i18ngo "github.com/volcengine/i18n-sdk-golang" ) client := i18ngo.NewClient( context.Background(), "${YOUR_PROJECT_NAME}", "${YOUR_NAMESPACE}", WithAppKey("${YOUR_APP_KEY}"))
项目名、空间名称、appKey
从 Starling 平台获取,请保证正确,appKey
用于身份鉴权,为安全考虑建议不要使用明文出现在代码中。
提供两种方式获取已翻译的文案:获取给定项目、给定空间的整个文案包 或者 指定获取单个key的文案。
通过指定key和语言,以及可选的模式(如灰度发布的文案,功能暂未支持,可先忽略),对于语言可指定兜底语言或者指定版本。具体接口定义如下:
GetText(key string, lang string, mode ...ModeType) (val string, lang string) GetTextWithFallback(key string, langs []string, mode ...ModeType) (val string, lang string) GetTextWithFallbackVersion(key, lang string, fb FallbackType, ver int, mode ...ModeType) (val string, lang string, version int64)
调用实例:
val, lang := client.GetText("abc", "en")
通过指定语言以及可选的模式(如灰度发布的文案,功能暂未支持,可先忽略)获取整个文案包,对于语言可指定兜底语言或者指定版本。文案包以 key=value
对的形式返回,具体接口定义如下:
GetPackage(lang string, mode ...ModeType) (map[string]string, string, int64) GetPackageWithFallback(langs []string, mode ...ModeType) (map[string]string, string, int64) GetPackageWithFallbackVersion(lang string, fb FallbackType, ver int, mode ...ModeType) (map[string]string, string, int64)
调用实例:
pkg, ver := client.GetPackage("zh-Hans")
创建客户端时,提供了多种选项可进行细粒度控制,默认可忽略,如使用这些详细配置请务必清楚具体选项的含义。
WithHTTPDomain(domain string)
: 设置文案拉取的远程域名,默认为Starling提供的公网域名,如有本地代理可通过该选项设置WithEnableHTTPs(enable bool)
: 设置文案拉取是否使用httpsWithHTTPTimeout(timeout int)
: 设置单次请求进行文案拉取时的超时时间WithEnableSimilar(similar bool)
: 设置是否让SDK自动进行相似语言的兜底处理WithEnableFallback(fallback bool)
: 设置是否使用全局兜底WithOperator(operator string)
: 设置当前调用SDK拉取文案时的用户标识,可用于审计WithRetryPolicy(policy RetryPolicy)
: 设置请求失败时进行重试的策略,具体包括如下两种:
NewNoRetryPolicy()
: 不使用重试NewBackoffRetryPolicy(maxRetry int, maxDelayMs, intervalMs int64)
: 使用指数回退重试,提供最大重试次数、指数重试间隔、最大间隔参数WithLogger(logger Logger)
: 设置日志处理器,可自行处理SDK内部的细节日志WithMetricer(metricer Metricer)
: 设置监控处理器,可自行处理SDK内部的调用监控信息WithProxyer(proxyer Proxyer)
: 设置获取文案的proxy,可用于本地开发测试联调WithRefreshInterval(d time.Duration)
: 设置SDK在后台异步更新文案的间隔时间,允许间隔为 1秒 到 1分钟,默认 10秒WithCacheDuration(d time.Duration)
: 设置SDK本地文案缓存时长,默认6小时,须大于1分钟使用实例:
import ( "context" i18ngo "github.com/volcengine/i18n-sdk-golang" ) client := i18ngo.NewClient( context.Background(), "${YOUR_PROJECT_NAME}", "${YOUR_NAMESPACE}", gostarling.WithRetryPolicy(gostarling.NewNoRetryPolicy()), gostarling.WithEnableFallback(true), gostarling.WithRefreshInterval(time.Second*30), gostarling.WithCacheDuration(time.Hour*12), )