Xcode 两个目标和两个可本地化的.Strings(一个基)

Xcode 两个目标和两个可本地化的.Strings(一个基),xcode,swift,target,localizable.strings,Xcode,Swift,Target,Localizable.strings,我有一个简单的问题,我不知道如何使它工作 我有两个目标: TargetApp1 TargetApp2 我有两个可本地化的.string: 第二语言的翻译 对于不同的名称(两种语言),仅适用于TargetApp2 例如: 我有一个按钮,一条文字,或者别的什么。在每个应用程序上,它应该是不同的 TargetApp1:en:“商店”-lg:“商店” TargetApp2:en:“经销商”-lg:“经销商” 我尝试为两个目标保留第一个Localizable.strings,并仅为第二个目标保

我有一个简单的问题,我不知道如何使它工作

  • 我有两个目标:

  • TargetApp1
  • TargetApp2
  • 我有两个可本地化的.string:

  • 第二语言的翻译
  • 对于不同的名称(两种语言),仅适用于TargetApp2
例如: 我有一个按钮,一条文字,或者别的什么。在每个应用程序上,它应该是不同的

  • TargetApp1:en:“商店”-lg:“商店”
  • TargetApp2:en:“经销商”-lg:“经销商”

我尝试为两个目标保留第一个Localizable.strings,并仅为第二个目标保留第二个Localizable.strings。问题是一次只加载一个Localizable.strings。我想知道如何使TargetApp2使这两个本地化.strings相互补充。

如果我正确理解了您的问题,您需要为您的
本地化.strings文件指定不同的名称,然后使用,否则,正如您所发现的,它们会冲突,并且在运行时只使用一个

e、 g

  • 将Target1的
    保留为可本地化的.strings
  • 将Target2的
    可本地化的.strings
    重命名为
    额外的.strings
  • 使用第二个表中字符串的任何位置,请使用
    NSLocalizedStringFromTable(键@“Extra”,注释)
我第一次遇到这个问题是在添加AmazonAWS库时,该库包含自己的
Localizable.strings
,可以任意使用,而不是我的。然而,因为该文件中只有几个字符串,所以本地化似乎不起作用。那是一个有趣的2天调试


敏捷的 在Swift中,
NSLocalizedStringFromTable
不存在该确切名称。相反,
NSLocalizedString

func NSLocalizedString(
    key: String,
    tableName: String? = default,
    bundle: NSBundle = default,
    value: String = default,
    #comment: String) -> String

使用Swift,您只需将受影响字符串的
NSLocalizedString(key:key,comment:)
更改为
NSLocalizedString(key:key,table:“Extra”comment:)

如果我正确理解了您的问题,您需要为
可本地化的.strings文件指定不同的名称,然后使用,否则,正如您所发现的,它们将发生冲突,并且在运行时只使用一个

e、 g

  • 将Target1的
    保留为可本地化的.strings
  • 将Target2的
    可本地化的.strings
    重命名为
    额外的.strings
  • 使用第二个表中字符串的任何位置,请使用
    NSLocalizedStringFromTable(键@“Extra”,注释)
我第一次遇到这个问题是在添加AmazonAWS库时,该库包含自己的
Localizable.strings
,可以任意使用,而不是我的。然而,因为该文件中只有几个字符串,所以本地化似乎不起作用。那是一个有趣的2天调试


敏捷的 在Swift中,
NSLocalizedStringFromTable
不存在该确切名称。相反,
NSLocalizedString

func NSLocalizedString(
    key: String,
    tableName: String? = default,
    bundle: NSBundle = default,
    value: String = default,
    #comment: String) -> String

使用Swift,您只需将受影响字符串的
NSLocalizedString(key:key,comment:)
更改为
NSLocalizedString(key:key,table:“Extra”comment:)

我实际上是在用Swift编程。NSLocalizedStringFromTable在swift中不存在。不,不是该名称。如果内存正常,“table”是Swift中
NSLocalizedString
中的可选参数。value参数的用途是什么?我在苹果的文档中没有找到任何描述。如果您提供一个值,如果没有提供密钥的翻译,这将作为默认值使用。如果没有这个参数,密钥本身被用作默认值。我实际上是在用Swift编程。NSLocalizedStringFromTable在swift中不存在。不,不是该名称。如果内存正常,“table”是Swift中
NSLocalizedString
中的可选参数。value参数的用途是什么?我在苹果的文档中没有找到任何描述。如果您提供一个值,如果没有提供密钥的翻译,这将作为默认值使用。如果没有此参数,则密钥本身将用作默认值