代码之家  ›  专栏  ›  技术社区  ›  Sunil Targe

localizable.strings(base)文件字符串不是由iPhone中设置的其他语言读取的?

  •  2
  • Sunil Targe  · 技术社区  · 6 年前

    我已经在我的应用程序中实现了多语言,并创建了多个 localizable.strings files created.

    我在 localizable.strings(base). file中具有所有字符串键和值,作为其默认文件从所有其他语言中读取,如果特定语言字符串文件中缺少pertuse字符串,例如。 localizable.strings(japanese). and some strings are missing in japanese. file so I expecting to get string translation froM base

    但不会发生,这是我的问题。

    我有所有的字符串键和值 Localizable.strings (Base) 文件,作为默认文件,如果特定语言字符串文件中缺少特定字符串,则从所有其他语言读取,例如。 Localizable.strings (Japanese) 一些字符串在 Japanese 文件,因此我希望从中获取字符串转换 Base .

    但不会发生,这是我的问题。

    3 回复  |  直到 6 年前
        1
  •  1
  •   Harshal Wani    6 年前

    我也面临同样的问题,并应用了这个解决方案:

    1. 为英语创建新的默认字符串本地化文件( default english.strings ) 例如: “Hello_key”=“Hello”
    2. 将其他语言支持添加到 localizable.strings file 例如:Japanese String: “Hello_key”=“_ _”

    <开始=“3”>
  • 创建字符串 extension

    扩展字符串{
    
    func localizedstringkey(bundle:bundle=.main,tablename:string=“localizable”)->字符串{
    返回nslocalizedstring(self,tablename:tablename,value:“”(nslocalizedstring(self,tablename:defaultenglish),bundle:.main,value:self,comment:“”),comment:“”)
    }
    
  • 和set string “hello_key”.localizedstringkey()

  • ) 例如: "hello_key" = "Hello"
  • 向添加其他语言支持 Localizable.strings 文件 例如:日语字符串: "hello_key" = "こんにちは"
  • enter image description here

    1. 创建字符串 extension

      extension String {
      
      func localizedStringKey(bundle _: Bundle = .main, tableName: String = "Localizable") -> String {
          return NSLocalizedString(self, tableName: tableName, value: "\(NSLocalizedString(self, tableName: "DefaultEnglish", bundle: .main, value: self, comment: ""))", comment: "")
      }     }
      
    2. 设置字符串 "hello_key".localizedStringKey()

        2
  •  1
  •   Ashley Mills    6 年前

    当本地化应用程序时,不需要使用 Base Localizable.strings 文件。

    按以下步骤定位字符串

    NSLocalizedString("DISMISS_BUTTON", value: "Press To Dismiss", comment: "Button used to dismiss the payment screen")
    

    然后 key (第一个参数)用于查找 可本地化的.strings 对于给定的语言。如果找不到,它将使用 value 字符串中的参数作为回退。

    如果使用Xcode 本地化导出 ,xliff文件将包含所有 NSLocalizedString S

    你唯一需要的时间是 基地 可本地化的.strings 用于在源代码中不显示为字符串的键。

    let localisableName = "LAYOUT_NAME_" + name.uppercased()
    NSLocalizedString(localisableName)
    

    在这种情况下,您应该添加

    "LAYOUT_NAME_WHATEVER" = "Whatever";
    

    对你 base 文件,它也将包含在生成的xliff中

        3
  •  1
  •   ViruMax    6 年前

    不, 如果没有可用的特定本地化版本,则使用基本本地化文件。 例如,如果你的应用程序有一个基本的英语本地化,并且你添加了法语本地化,那么除法语以外的其他语言将获得英语值。

    这个 documentation 对于 NSLocalizedString(key,comment) 非常清楚-

    的初始值 key 在字符串文件中 钥匙 . 使用 NSLocalizedStringWithDefaultValue 用于指定其他值的宏 关键。

    你还希望它还能回来吗?代码只是在字典中查找键。它不知道与密钥相关联的消息是什么,更不用说如何将该消息翻译成俄语了。