如何在 Android 应用程序中包含不同的语言

问题描述

我想要一个支持 2 种语言的 Android 应用:英语和德语。该应用程序应由多个用户在同一设备上使用。现在我在弄清楚如何实现这一点时遇到了问题。我知道基本上我可以/应该使用字符串资源文件。但是,我不能使用它们有两个大缺点:

  1. 我有时会使用静态上下文中的字符串,而您无法从静态上下文中调用这些资源(没有任何 'hack')
  2. 更重要的是:我想在数据库中写入订单,根据用户的选择,订单应该以德语或英语显示。当我使用 String 资源时,我不能这样做,因为例如德国用户订购的东西是以德语写入数据库的,当英语用户想用英语查看订单时,这是不可能的,因为它仅作为德语字符串存储在数据库中(不仅与订单有关,以及我需要德语和英语的其他方面)

所以我当前的解决方法是始终为我的 8 个数据库表中的每个表提供 2 个版本。一份是英文的,一份是德文的。每次我将一些东西写入数据库时​​,我都会将其写入 2 个数据库版本。每当需要使用数据库中的某些内容时,我都会使用 if 语句询问当前使用的语言,然后在英语或德语表中进行数据库查询

现在我的问题是,您是否知道一种更方便的方法,或者这是要走的路?基本上不难像这样实现它。然而,编码工作量相当大,因为我总是必须将所有内容插入 2 个数据库中,并且总是必须在许多位置检查应用程序当前使用的语言以及进行数据库查询的依赖。

感谢您的每一条评论和建议,并非常感谢您的帮助。

解决方法

  1. 在我看来,需要从静态上下文中获取字符串说明您的应用程序设计不佳。或者,您可能有一些特定的案例 - 如果是这样,您应该发布一个示例。
  2. 您可以简化您的解决方案 - 只需为翻译创建单独的表格。这样,您将拥有一个数据库和 9 个表。因此,所有应包含不同语言文本的表都将包含新表行的 id。这个带有翻译的表将以语言作为列。此解决方案的缺点是您必须使用带有连接的查询,但如果您使用空间应该不会很困难。
,

如果您想添加“印地语”语言,那么您可以创建 \res\values-hi\arrays.xml 并添加您的自定义印地语字符串并直接使用它。

  1. 对于印地语 -

     <resources>
         <string name="app_name">ऐप्प का  नाम </string>
         <string name="Verify Otp">ओटीपी सत्यापित करें</string>
         <string name="Sign in">साइन इन करें</string>
          <string name="reigster">रजिस्टर</string>
     </resources>
    

您可以为不同的语言创建不同类型的值文件夹。 或者,您可以使用翻译编辑器来添加不同的语言。 选择 -> 项目 -> 应用程序 -> 翻译编辑器 添加您的字符串键并以所选语言翻译您的键。 看下面的截图后你可以更好地理解:- Translation Editor