2017-05-01 36 views
0

私は、文字列とdbの文字列を比較する必要があります。ローカライズされた文字列とデータベースの文字列を比較するには?

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

英語の言語で問題なく動作します。私はそれをアラビア語でどのように比較するのか分かりません。アラビア語でチェックする必要もあります。それを確認するために私に教えてください。

+2

ようこそスタックオーバーフロー! [何を試しましたか?](http://whathaveyoutried.com)。あなたは動作しない例がありますか?失敗したバージョン([mcve]として)とその出力と期待される出力を表示すれば、誰かを助けることができるでしょう。 –

答えて

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

をあなたローカライズ文字列をチェックし、私は本当にあなたの質問を理解していないが、私は、次の遊び場コードがあなたを助けることができる願っています:

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") 
} 
+0

あなたはopをなぜ理解していないのですか? –

1

一般に、表示文字列に基づいて意思決定を行うのは悪い考えです。これは、表示文字列では2倍になります。

アラビア語を話す人は、開発言語をアラビア語にしてから、必要に応じて他の言語にローカライズすることができます。

いずれの場合でも、固定文字列をキーとして使用し、NSLocalizedString(_:tableName:bundle:value:comment:)を呼び出すか、バリアントの1つを呼び出して表示文字列を取得することをお勧めします。例:

let screen1Prompt = "screen1Prompt" 

その後、あなたは表示のためにローカライズされた文字列必要がある場合:

実際のプロンプト文字列があるかもしれない
let prompt = NSLocalizedString(screen1Prompt) 

を "キーを共有することができるので、どこかの中央にこのコードを入れて

お支払いの日付を選択してください。英語、アラビア語など

データベース内で何かを照合する必要がある場合は、ローカライズされた表示文字列ではなく、ローカライズされていないキーを使用して検索してください。

このようにして後で表示文字列を変更しても、コードは引き続き動作します。

関連する問題