Android SDK v1
面向Android设备的无线本地化SDK。没有更多不必要的应用程序更新。
一种通过空中测量和管理更新的新方法(OTA)
我们正在改进衡量在线旅行社使用情况的方式。未来的更新将改变我们衡量使用量的方式,以GB/月(GB/月)而不是月活跃用户(MAU)。换句话说,这取决于你使用了多少数据,而不是你有多少活跃用户。所以你可以随意添加任意数量的应用用户。影响数据使用的三个因素是用户,包大小,发布包的数量.
简介
本指南假设你已经为你的Android应用程序的本地化做好了准备,因为SDK是为Android资源设计的。
Lokalise Android SDK是可用的. aar
库(可以下载。通过访问以下链接)或作为Maven依赖项(请参阅“入门”部分的步骤3),并可轻松纳入您的项目。在Lokalise编辑器中完成翻译之后,使用Lokalise Download页面生成一个包。当终端用户在他们的设备上打开你的应用时,SDK会从我们的服务器请求bundle的最新版本,如果找到了,它会下载这个包并在本地存储它。
请记住MAU (monactive users)配额!每次安装移动应用程序时,我们会在用户设备上为应用程序生成一个新的惟一ID。一旦我们收到来自已安装应用程序的翻译请求,这个ID就会传递给我们的服务器。如果这个ID之前没有在当月注册过,那么我们就会给你的MAU计数器加1。
换句话说,计数器在当前月份第一次看到ID时递增。如果这个ID已经注册(我们的系统可以看到),你的MAU计数器就不会增加。
兼容性
我们的Android SDK 1.3不支持AppCompat 1.2。你可以将AppCompat降级到1.1继续使用SDK 1.3,或者切换到Android SDK 2.0。
限制
当从XML膨胀时,一些视图不支持(操作栏,菜单项,Android首选项和可能的其他),但你仍然可以通过getString ()
,getText ()
,getQuantityString ()
和其他系统方法,以及以编程方式设置这些视图的内容。
例如,以下代码可用于您的菜单项:
@覆盖公共布尔onCreateOptionsMenu(菜单菜单){getMenuInflater(). inflation (R.menu.)主菜单);menu.findItem (R.id.action_settings) .setTitle (R.string.my_settings_title);/ /……任何其他菜单项返回true;}
开始
步骤1:在Lokalise中设置项目
如果你还没有这样做,在Lokalise中添加一个新项目,上传你可能有的任何源语言文件(或者直接在Lokalise的编辑器中添加键,如果你正在构建一个新的应用程序)。注意项目ID,它可以在项目设置中找到,通常看起来像这样:3281927757690217 f560f6.71199070
.
步骤2:生成包
去下载页面在Lokalise,选择Lokalise Android SDK格式,并单击构建只按钮来生成包。您将被自动带到项目设置中的bundle版本管理页面。暂时让开关保持原样。请参阅管理捆绑包部分中的详细信息。
确保在发布应用程序时总是在项目中包含最新的字符串。
步骤3:在项目中包含Lokalise SDK
首先你需要添加https://maven.lokalise.co到您的存储库列表中,并将您的库以及谷歌GSON库包含在.gradle
文件:
仓库{…Maven {url "https://maven.lokalise。Co "}}…依赖关系{…实现“com.lokalise.android: ota-sdk: 1。+' implementation 'com.google.code.gson:gson:2.8.0'}
如果您正在使用ProGuard,请添加以下规则:
保持班级。** {*;-dontwarn co.lokalise.*
另外,如果你正在使用DexGuard,你需要指定这些额外的规则:
-keepresources string/** -keepresources string-array/** -keepresources plurals/**
步骤4:初始化SDK
对于这一步,你需要你的SDK令牌(在项目设置> General选项卡中生成一个令牌)和所需项目的项目ID(在项目设置中获得)。在你的主Application类中包含以下代码:
公共类MyApplication扩展了Application{…@覆盖公共无效onCreate() {super.onCreate();//初始化Lokalise SDK与项目SDK令牌和项目id //这是很重要的,在"super.onCreate()"之后调用它//如果你正在使用AppCompatDelegate.setCompatVectorFromResourcesEnabled(true) //确保它在LokaliseSDK.init() LokaliseSDK之前被调用。Init ("","<项目id>",这个);//如果你想使用预发布包lokalisesdk . setprerrelease (true);//从Lokalise获取最新的翻译(可以在任何地方调用)LokaliseSDK.updateTranslations();}……}
我们还需要将Lokalise SDK注入到Activity上下文中。为此,我们建议您创建一个基本Activity类,并从中扩展所有的活动。添加以下代码到您的活动:
公共类MainActivity扩展了AppCompatActivity{…@Override protected void attachBaseContext(Context newBase){//将Lokalise SDK注入到活动上下文super.attachBaseContext(LokaliseContextWrapper.wrap(newBase));}……}
如果你正在使用Android的书法库,附加到上下文应该是这样的:
super.attachBaseContext (LokaliseContextWrapper。wrap(calligraphy hycontextwrapper .wrap(newBase)));
就是这样!你已经准备好了!
使用
更新的翻译
没有必要更新你的代码,照例引用键:
android:text="@ +id/test"…/>
或者来自代码:
TextView test = (TextView) findViewById(R.id.test);test.setText (R.string.hello_world);
如果你想要你的操作栏有最新的翻译,设置它的标题编程:
@覆盖保护无效onResume() {super.onResume();setTitle (R.string.hello_world);}
更改应用程序区域设置
要更改应用程序的语言环境,请使用LokaliseSDK。setLocale(< ISO语言)" zh ">, <区域ISO" g " >)
方法。
不需要自定义区域设置更改代码或上下文包装器,只需调用此方法并重新启动Activity。
动态添加键
有时需要添加新的字符串而无需重新编译应用程序。
在通过Lokalise界面添加一个新密钥并创建一个新的Android SDK包后,你可以使用以下代码通过名称引用新密钥:
LokaliseResources资源= new LokaliseResources(context);String newKey = resources.getString("new_key_name");if(newKey != null){//处理新值}
请注意,当您请求该键时,并不能保证它会存在,因为您可以将任何键名传递给方法,所以请确保检查返回值是否为空。
回调(在1.3.0版本中可用)
如果您需要知道Lokalise何时下载完一个新的翻译包,有几个选项。
Lokalise回调
最简单的方法是使用LokaliseCallback
接口:
LokaliseCallback myCallback = new LokaliseCallback() {@Override public void ontranslationsupdate (long oldBundleVersion, long newBundleVersion){//做点什么}};LokaliseSDK.addCallback (myCallback);
如果需要删除回调,只需使用LokaliseSDK.removeCallback (myCallback);
.
广播接收器
你也可以通过Broadcast接收器接收关于bundle更新的通知:
myIntentFilter = new IntentFilter(lokalisedefinitions . intent_translations_updated);BroadcastReceiver myReceiver = new BroadcastReceiver(){@覆盖公共无效onReceive(Context Context, Intent Intent) {long previous_version = Intent . getlongextra (lokalise定义。EXTRA_BUNDLE_VERSION_OLD, 0);long current_version = intent.getLongExtraEXTRA_BUNDLE_VERSION_NEW, 0);//做某事}};@覆盖保护无效onResume() {super.onResume();registerReceiver (myReceiver myIntentFilter);} @覆盖受保护无效onPause() {super.onPause();unregisterReceiver (myReceiver);}
管理包
出版的变化
Lokalise支持包的生产版本和预发布版本,并允许您保留每个包的不同版本。
当bundle生成时,它将带你到项目设置/ Lokalise Android SDK部分。在bundle发布到生产或预发布之前打开相关开关。
打击保存更改申请。
包冻结
Lokalise提供了在特定应用版本上冻结特定包的选项。正如你在下面的截图中所看到的,“Test_01”包被分配给构建从0到6的应用,而最新的包被分配给构建从7到12的应用。Lokalise Android SDK 1.3及以上版本支持此功能。
添加语言
尽管如果你向bundle中添加了一种新的语言,它将在应用程序中可用,但我们建议发布一个包含新语言原生资源的新构建,因为这可能会导致不一致的接口翻译。例如,操作栏或应用程序名称将不会被翻译。
从1.3.2版本起,您可以通过调用LokaliseSDK.getAvailableLocales ()
方法。
移动SDK洞察
我们提供项目的综合使用统计统计数据页面。要访问Mobile SDK洞察,请打开项目仪表板并单击更多>统计数据.
然后,在报告范围部分,切换到Mobile SDK insights选项卡。
现有的报告包括:
- 每日独立用户(范围)
- 每日请求(范围)
- 月活跃用户
更新 20天前