如何比较本地化字符串与数据库中的字符串?

时间:2017-05-01 10:27:27

标签: ios swift arabic

我有一个字符串与db中的字符串进行比较。

var variableFromDB = "test"
if "test" == variableFromDB{
    print("Success")
}

它在英语中运作良好。我不知道如何用阿拉伯语进行比较。是否需要检查阿拉伯语。请告诉我知道检查。

3 个答案:

答案 0 :(得分:1)

通常,您的代码根据显示字符串做出决策是个坏主意。这对显示字符串来说是双倍的。

如果您的主要受众是讲阿拉伯语的,您可以将您的开发语言设为阿拉伯语,然后根据需要将其他语言本地化。

在任何情况下,我建议使用一组固定字符串作为键,然后调用NSLocalizedString(_:tableName:bundle:value:comment:)或其中一个变体来获取显示字符串。例如:

将此代码放在中央位置,以便共享密钥:

let screen1Prompt = "screen1Prompt"

然后当您需要显示的本地化字符串时:

let prompt = NSLocalizedString(screen1Prompt)

实际提示字符串可能是“请选择付款日期”。英语,阿拉伯语等

然后,如果您需要匹配数据库中的某些内容,请使用未本地化的密钥进行查找,而不是使用本地化的显示字符串。

这样,如果您以后更改显示字符串,您的代码仍然有效。

答案 1 :(得分:0)

 var language: String

UserDefaults.standard.set("AE", forKey: "Apple") // manually set language 
UserDefaults.standard.synchronize()
self.language = UserDefaults.standard.object(forKey: "Apple")as! String

// self.language = Locale.current.languageCode // your device language

extension String {
func stringlocalized(lang:String) ->String {

    let path = Bundle.main.path(forResource: lang, ofType: "lproj")
    let bundle = Bundle(path: path!)

    return NSLocalizedString(self, tableName: nil, bundle: bundle!, value: "", comment: "")
}}

//使用当前语言检查本地化字符串

 let str  = “ test”.localized(lang:  self.language! )

if str ==variableFromDB 
{ // Your logic here
}

答案 2 :(得分:-2)

我真的不明白你的问题,但我希望以下游乐场代码可以帮到你:

import UIKit

//Your example
var variableFromDB = "test"
if "test" == variableFromDB {
    print("Success")
}

//The equality check is same for arabic or any other language because the strings in Swift are it UTF8
var arabicVariableFromDB = "بل مارد الخاصّة وفي, عل عدد أكثر استدعى. بلاده وإقامة هو أضف,"
if "بل مارد الخاصّة وفي, عل عدد أكثر استدعى. بلاده وإقامة هو أضف," == arabicVariableFromDB {
    print("Success")
}

//Example for using NSLocalizesStrings
//You need to define KeyForTheString in Localizable.strings for exapmple.
//The shorter form for NSLocalizes string is: NSLocalizedString("KeyForString",  comment: "Just a comment for the translator")
var localizedString = NSLocalizedString("KeyForString",
                                        tableName: nil,
                                        bundle: Bundle.main,
                                        value: "بل مارد الخاصّة وفي, عل عدد أكثر استدعى. بلاده وإقامة هو أضف,",
                                        comment: "Just a comment for the translator")

arabicVariableFromDB = "بل مارد الخاصّة وفي, عل عدد أكثر استدعى. بلاده وإقامة هو أضف,"
if localizedString == arabicVariableFromDB {
    print("Success")
}//: Playground - noun: a place where people can play

import UIKit

//Your example
var variableFromDB = "test"
if "test" == variableFromDB {
    print("Success")
}

//The equality check is same for arabic or any other language because the strings in Swift are it UTF8
var arabicVariableFromDB = "بل مارد الخاصّة وفي, عل عدد أكثر استدعى. بلاده وإقامة هو أضف,"
if "بل مارد الخاصّة وفي, عل عدد أكثر استدعى. بلاده وإقامة هو أضف," == arabicVariableFromDB {
    print("Success")
}

//Example for using NSLocalizesStrings
//You need to define KeyForTheString in Localizable.strings for exapmple.
//The shorter form for NSLocalizes string is: NSLocalizedString("KeyForString",  comment: "Just a comment for the translator")
var localizedString = NSLocalizedString("KeyForString",
                                        tableName: nil,
                                        bundle: Bundle.main,
                                        value: "بل مارد الخاصّة وفي, عل عدد أكثر استدعى. بلاده وإقامة هو أضف,",
                                        comment: "Just a comment for the translator")

arabicVariableFromDB = "بل مارد الخاصّة وفي, عل عدد أكثر استدعى. بلاده وإقامة هو أضف,"
if localizedString == arabicVariableFromDB {
    print("Success")
}