Je crée une extension d'autocollant iMessage avec des autocollants contenant des textes. Je ne vois aucune option dans Xcode pour localiser les autocollants? Est-il possible de localiser des autocollants?Comment localiser les autocollants iMessage?
Répondre
Peut-être que c'est évident, mais vous pouvez le gérer à l'intérieur d'une extension. Si vous ne créez pas un pack, mais une extension, vous pouvez récupérer des autocollants pour votre localisation.
Si vous souhaitez afficher différents autocollants dépendants, par ex. Dans la langue de votre appareil, vous devez créer une application iMessage au lieu d'une application Sticker Pack. Et vous devez écrire du code car il n'est pas possible d'avoir ce comportement dans une simple application Sticker Pack.
Cependant, ceci est assez simple. Pour commencer, suivez ce tutoriel: http://blog.qbits.eu/ios-10-stickers-application/
Une syntaxe de code est obsolète, mais XCode vous aidera à résoudre ce problème.
Vous pouvez placer vos ressources localisées dans différents dossiers et les projets que vous en simple glisser-déposer XCode (assurez-vous de vérifier « créer des références de dossier »): Screenshot of project structure
Vous pouvez faire quelque chose comme cela dans votre viewDidLoad()
:
//-- get current language set
var imageSetPath = "/EN"; //-- default to english
let languageCode = NSLocale.preferredLanguages[0]
if languageCode.hasPrefix("zh-Hans") { imageSetPath = "/CNS" }
else if languageCode.hasPrefix("zh-Hans") { imageSetPath = "/CNT" }
else if languageCode.hasPrefix("ko") { imageSetPath = "/KR" }
else if languageCode.hasPrefix("ja") { imageSetPath = "/JP" }
//-- load localized stickers
imageUrls = recursivePathsForResources(path: Bundle.main.bundlePath + imageSetPath, type: "png")
loadStickers(urls: imageUrls)
où
func recursivePathsForResources(path: String, type: String) -> [URL] {
// Enumerators are recursive
let enumerator = FileManager.default.enumerator(atPath: path)
var filePaths = [URL]()
while let filePath = enumerator?.nextObject() as? String {
if NSURL(fileURLWithPath: filePath).pathExtension == type {
let url = URL(fileURLWithPath: path).appendingPathComponent(filePath)
filePaths.append(url)
}
}
return filePaths
}
(modifié à partir https://stackoverflow.com/a/5860015/6649403)