2017-05-01 2 views
0

Ich habe eine Zeichenfolge mit der Zeichenfolge aus der Datenbank zu vergleichen.Wie lokalisierte Zeichenfolge mit der Zeichenfolge aus der Datenbank verglichen?

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

Es funktioniert gut in der englischen Sprache. Ich weiß nicht, wie man es in der arabischen Sprache vergleicht. Ist die Notwendigkeit, auch in arabischer Sprache zu überprüfen. Bitte sag es mir, um es zu überprüfen.

+2

Willkommen bei Stack Overflow! [Was hast du versucht?] (Http://whathaveyoutried.com). Hast du ein Beispiel, das nicht funktioniert? Zeigen Sie uns die fehlerhafte Version (als [mcve]) und ihre Ausgabe sowie die erwartete Ausgabe, und Sie werden eher jemanden finden, der Ihnen helfen kann. –

Antwort

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: "") 
}} 

// Prüfen Sie Localization String von Ihrer aktuellen Sprache

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

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

ich nicht wirklich verstehe Ihre Frage, aber ich hoffe, dass die folgenden Spielplatz Code könnte Ihnen helfen:

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

verstehst du nicht warum dann post antworten. –

1

Im Allgemeinen ist es eine schlechte Idee, dass Ihr Code Entscheidungen basierend auf Anzeigestrings trifft. Das gilt für Anzeigezeichenfolgen doppelt.

Wenn Ihre primäre Zielgruppe Arabisch spricht, können Sie Ihre Entwicklungssprache in Arabisch formatieren und sie dann nach Bedarf für andere Sprachen lokalisieren.

In jedem Fall würde ich vorschlagen, eine Reihe von festen Zeichenfolgen als Schlüssel verwenden und dann NSLocalizedString(_:tableName:bundle:value:comment:) oder eine seiner Varianten aufrufen, um eine Anzeigezeichenfolge abzurufen. Beispiel:

Diesen Code irgendwo zentral, damit die Schlüssel geteilt werden:

let screen1Prompt = "screen1Prompt" 

Dann, wenn Sie einen lokalisierten String für die Anzeige benötigen:

let prompt = NSLocalizedString(screen1Prompt) 

Wo die tatsächliche Prompt-String könnte " Bitte wählen Sie das Datum für Ihre Zahlung aus. " in Englisch, Arabisch, etc.

Wenn Sie dann etwas in Ihrer Datenbank abgleichen müssen, suchen Sie es mit dem nicht lokalisierten Schlüssel, nicht mit der lokalisierten Anzeigezeichenfolge.

Wenn Sie später die Anzeigezeichenfolge ändern, funktioniert Ihr Code weiterhin.

Verwandte Themen