【问题标题】:Android - How to localize content properly?Android - 如何正确本地化内容?
【发布时间】:2014-03-18 00:38:22
【问题描述】:

考虑一个获取用户详细信息的应用 - 姓名、性别、婚姻状况等。 比如说,我需要该应用支持英语、西班牙语和普通话。

在用户填写表单时以所有不同语言显示“男性”/“女性”是通过不同语言的不同 strings.xml 文件实现的。

我会将详细信息保存到英文 SQLite 数据库中。因此,如果用户以西班牙语运行应用并选择“Masculino”,它仍会以“Male”的形式保存到数据库中。

现在,当用户想查看他用西班牙语输入的详细信息时,我如何读取 SQLite 中的英文数据并将其翻译成西班牙语或普通话或任何其他语言?

【问题讨论】:

    标签: android localization


    【解决方案1】:

    我不会在数据库中存储这样的英文字符串。我会将其存储为整数值,男性为 0,女性为 1。然后在显示时我会检查值,然后使用资源中相应字符串的 id 并从 xml 字符串文件中获取字符串。

    【讨论】:

    • 如果你走这条路,不要试图使用资源ID作为字符串;当您重建应用程序时,它们可以/将会改变。您需要维护自己的结构(枚举?)来管理映射。
    【解决方案2】:

    您还可以将字符串名称存储为“Male”而不是“Male”。例如,如果您在您的 strings.xml 文件中声明

    <string name="gender_male">Male</string>
    

    然后将"gender_male" 存储为数据库中的值,而不是"Male"。从数据库中检索时,然后调用

    String value = get from database;    
    int valueResId = getResources().getIdentifier(value, "string", your package name);
    String gender = getString(valueResId);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-09-26
      • 1970-01-01
      • 2019-08-07
      • 1970-01-01
      相关资源
      最近更新 更多