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选项卡。

现有的报告包括:

  • 每日独立用户(范围)
  • 每日请求(范围)
  • 月活跃用户