如何支持 Android 库的本地化。

4

我希望构建一个Android库(jar文件),该jar文件需要本地化。比如,我有一个类:

class MyMessageService
{
    //Needs to return different languages message according to locale
    String getMessage1(); 
}

我尝试将res/values/string.xmlR.class打包进jar文件中。
但在我的主应用程序中引用该jar文件后,我使用以下代码进行调用:
 String s = this.getResources().getString(mylibrary.localize.R.string.hello); 

我得到了一个"s",它来自于我的主项目(资源ID冲突)。

有没有办法创建一个支持本地化的Android库?我不能让主应用程序导入我的库资源,因为我的库应该是独立发货的。


你有阅读过这份文档吗?http://developer.android.com/guide/topics/resources/localization.html - hovanessyan
也许这个链接对您有帮助:http://www.kobu.com/i18n/android/index-en.htm - saini
2
请注意,我正在开发一个库。上面两个链接都是关于应用程序的,而不是库。 - goodier
我的猜测是,你只能通过一个Android库项目来实现它,然后在你的应用程序项目中依赖它。如果你只将它包含为一个jar文件,那么它是行不通的,因为R文件是在编译时/之前生成的,而你的jar已经编译完成,字符串ID不会被包含在内。这只是我的个人看法。 - cermak.cz
我认为这是您问题的答案:https://dev59.com/gGHVa4cB1Zd3GeqPrepj#9852908。 - koder
2个回答

1
你在Android上的lib使用方式有误。 我也曾遇到过像你一样在不同项目之间重用UI组件的问题。 试试Android Library Project(例如lib.jar.path),构建lib proj,现在你会得到生成的R类,将lib proj引用到你的应用proj中(在项目属性Android选项卡中),并使用lib.jar.path.R来查找你的字符串或其他内容。

0
很遗憾,使用jar无法以标准方式完成此操作。但是您可以自己实现本地化 - 可以通过Locale.getDefault()检索当前用户区域设置。之后,您可以构建一个开关并返回相应的区域设置字符串(它可以简单地保存在代码中或某个外部文件中)。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接