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

iOS VolcI18nSDK

最近更新时间2023.11.07 11:00:57

首次发布时间2023.02.06 14:20:34

一、简介

客户可以对线上文案进行热更新修复,并避免重新发版成本,直接将补丁下发至指定版本。
客户端补丁发布流程请参考客户端补丁发布

二、配置

组件地址

https://github.com/volcengine/volcengine-specs/tree/master/VolcI18nSDK/0.0.4

工程接入

源:'https://github.com/volcengine/volcengine-specs.git'

Cocoapods 接入:

pod 'VolcI18nSDK', '0.0.4'

Subspec:

  • Core(必选):核心逻辑,default_subspec,可不填

SDK配置

基本设置

  • 初始化
VolcI18nConfig *config = [[VolcI18nConfig alloc] init];
config.version = @"version";
config.deviceId = @"deviceID";
config.geckoAccessKey = @"accessKey";
/// 文案内容cache根目录
config.cacheRootDirectory = @"cacheRootDirectory";
/// 业务前缀需要从国际化翻译平台获取“空间标识“
config.namespace = @"xxx";
config.locale = @"xxx";
config.host = @"xxx";//client-api.multilingual-volc.com
config.completionBlock = ^(BOOL succeed, BDSPatchLoadStatus status) {
    /// 资源加载成功回调
    
    ///在回调函数中对接业务自己的i18n国际化逻辑
   
};
    
[[VolcI18nManager sharedInstance] startWithConfig:config];

Note:

  • 其中version,deviceId,geckoAccessKey,cacheRootDirectory 这4个参数系分发相关参数,必须保证一个应用下,初始化的参数是完全一致的

    参数类型是否必填说明
    versionString应用版本号
    geckoAccessKeyString补丁发布Access Key
    deviceIdString设备ID
    cacheRootDirectoryString文案内容cache根目录

    具体请参考客户端补丁发布

  • 如果需要自动把资源拷贝到其他目录,可以设置如下两个参数

VolcI18nConfig *config = [[VolcI18nConfig alloc] init];
config.autoMove = YES;
config.autoMoveTargetPath = @"deviceID";
  • 语言切换
[[VolcI18nManager sharedInstance] setCurrentPatchLocale:@"en" completion:^(BOOL succeed, BDSPatchLoadStatus status) {
    /// 资源切换成功回调
    
    /// AWELocalizations需要重新加载
    [[ALPLocalizationsManager sharedInstance] renewCurrentLanguage];
}];
三、详细接口介绍
  • 依赖VolcI18nManager.h
#import <VolcI18nSDK/VolcI18nManager.h>
  • 单例访问
+ (instancetype)sharedInstance;
  • 功能控制
@property (nonatomic, assign) BOOL enable; // default YES
  • 初始化方法
- (void)startWithConfig:(VolcI18nConfig *)config;
  • 切换语言
- (void)setCurrentPatchLocale:(NSString *)locale completion:(nonnull BDSPatchLoadStatusBlock)completion;
  • 通过宏加载资源,推荐使用
/// 普通文案
BDSLocalizedString(key)
/// 带占位符普通文案
BDSLocalizedStringWithFormat(key, ...)
/// 带占位符复数文案,返回仍带占位符
BDSPluralizedString(text, ...)
/// 带占位符复数文案,返回不带占位符
BDSPluralizedStringWithFormat(text, ...)
  • 资源加载
/**
 * @brief  普通文本翻译
 * @param  string  --- key
 *
 * 注意:优先使用宏定义调用
 */
- (nullable NSString *)translatedStringForString:(nullable NSString *)string;

/**
 * @brief  复数文本翻译
 * @param  string  --- key
 * @param  pluralValues  ---  复数值
 *
 * 注意:优先使用宏定义调用,返回值带有占位符,未进行format
 */
- (nullable NSString *)translatedStringForString:(NSString *)string pluralValues:(NSArray<NSNumber *> *)pluralValues;
四、调试与错误码
BDSPatchLoadStatusGeckoError = -2,

BDSPatchLoadStatusUnknown = -1,
   
   /// 更新成功
    BDSPatchLoadStatusSuccess = 0,
   /// 更新失败
    BDSPatchLoadStatusFailed = 1,
    
    /// 无需更新
    BDSPatchLoadStatusUnavailable = 2000,
五、注意事项&已知问题
  • 只有在启动或切换语言时才会拉取资源

  • 因为资源是异步加载的,回调中可能需要重新reload

  • 确保分发所需参数在任意位置有相同的设置,否则会触发断言

六、FAQ

接入遇到问题,欢迎发起工单进行咨询。