【问题标题】:Localizable assets in AndroidAndroid 中的可本地化资产
【发布时间】:2012-03-22 21:48:00
【问题描述】:

我刚刚找到了一个nice tutorial,它将帮助我在我的应用程序中实现一个简单的用户指南系统,因为我可以使用任何普通的旧 HTML 编辑器来绘制它。

我的问题很简单:因为所有resources 都是可本地化的,我可以轻松地将我的应用程序翻译成新的语言。 assets 呢?有自动定位机制吗?我不这么认为。

在加载帮助页面的 HTML 文件时,如何检索系统区域设置以构建本地化 URL?是否有一些调用来检索与资源世界中编码相同的显示大小/密度(即public String getDensity() 返回“xhdpi”、“ldpi”...)?

丹克 ;-)

【问题讨论】:

    标签: android localization internationalization


    【解决方案1】:

    如果您确实需要检查当前系统语言环境,一种简单的方法是在您的 strings.xml 文件中添加一个标识符字符串。

    例如,在 values/strings.xml 中,添加:

    <string name="lang">en</string>
    

    在values-es/strings.xml中,添加:

    <string name="lang">es</string>
    

    在 values-fr/strings.xml 中,添加:

    <string name="lang">fr</string>
    

    等等。然后你就可以用这样的方式以编程方式检查当前的语言(当然要改进,只是作为一个例子):

    if( "es".equals( getString(R.string.lang) ) ) {
    

    希望对你有帮助。

    【讨论】:

    • 如果您想获取设备的所选语言,这可能会对您有所帮助:Locale.getDefault().getDisplayLanguage();
    【解决方案2】:

    这是一个老问题,但以防万一有人这样做。我认为您不需要上面建议的额外语言字符串:

    <string name="lang">fr</string>
    

    只需添加资产 URL 字符串并进行翻译:

    <string name="content_location">file:///android_asset/en/index.html</string>
    

    在 values-fr/strings.xml 中,添加:

    <string name="content_location">file:///android_asset/fr/index.html</string>
    

    然后在代码中访问它:

    String URL = getResources().getString(R.string.content_location);
    

    这应该显示基于本地的 URL,因为您将它定义到特定的本地化字符串文件中。

    【讨论】:

    • hi.. 所以我们需要创建一个名为 en 和 fr 的文件夹?
    【解决方案3】:

    请参阅 android.view.Display 类 (reference) 和 java.util.Locale 类 (reference)

    【讨论】:

      【解决方案4】:

      看答案here,特别注意评论。

      【讨论】:

        猜你喜欢
        • 2013-09-19
        • 1970-01-01
        • 2015-08-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-03-24
        • 2017-10-18
        相关资源
        最近更新 更多