【问题标题】:Store language independent strings in Android resources在 Android 资源中存储与语言无关的字符串
【发布时间】:2013-01-17 13:33:14
【问题描述】:

如何在 Android 项目中存储一些与语言无关的值,例如网站地址。我目前将它存储在我的strings.xml 中。这看起来不太好,好像我添加了另一种语言和翻译,这个条目仍然具有相同的值并且会被复制。

我还想获得一些关于使用 I18N 创建 Android 项目的技巧。

【问题讨论】:

    标签: android internationalization resources


    【解决方案1】:

    您无需再次在已翻译的 xml 文件中创建相同的密钥。如果 Android 在 German/Spanish/Whatever 语言文件中没有找到 link,它将回退到存储在默认 string.xml 中的原始密钥。

    我建议先实现英文版,然后让别人翻译。

    【讨论】:

    • 好吧,我不知道这个功能。所以在这种情况下不需要更改代码。
    • 这背后的基本思想在应用程序名称的情况下是显而易见的。您无需将“Awesome”放入所有语言文件中。
    • 您还需要在首选项中调整您的 lint 设置以避免出现警告消息。
    【解决方案2】:

    对于 i18n 格式,您可以为一个本地创建一些资源文件夹:

    /res/values     <- default locale
    /res/values-fr  <- values for french locale
    ...
    

    有关更多示例,请阅读文档:http://developer.android.com/guide/topics/resources/localization.html

    【讨论】:

      【解决方案3】:

      对于独立于语言的字符串,只需创建一个带有常量的类:

      public class MyIndependentStrings {
      
      public static final String SOME_STRING = "Value";
      
      }
      

      用法:

      tvMyTextView.setText(MyIndependentStrings.SOME_STRING);
      

      在这种情况下,您将使用常量而不是来自 ../values/strings.xml 的 i18n 字符串

      【讨论】:

      • 这样他不能在xml文件中使用它们
      • "在这种情况下,您将使用常量,而不是来自 ../values/strings.xml 的 i18n 字符串" - 我提到过。
      【解决方案4】:

      尝试将独立于语言的字符串放入:

      \res\values-nodpi\strings.xml
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多