我正在创建一个iMessage贴纸包扩展,它具有包含文本的贴纸。我在Xcode中看不到任何本地化贴纸的选项?可以本地化贴纸吗?
发布于 2016-12-07 22:40:00
也许这是显而易见的,但是你可以在一个扩展中管理它。如果您创建的不是包,而是扩展,则可以为本地化获取准确的贴纸
发布于 2017-02-24 18:17:21
如果您希望根据设备的语言显示不同的贴纸资产,则需要创建一个iMessage应用程序,而不是贴纸包装应用程序。你需要写一些代码,因为在一个简单的Sticker Pack应用程序中不可能有这种行为。
然而,这非常简单。首先,请遵循以下教程:http://blog.qbits.eu/ios-10-stickers-application/
有些代码语法已经过时了,但是XCode可以帮助你轻松解决这个问题。
您可以将本地化的资源放在不同的文件夹中,并将它们拖放到XCode项目中(确保选中“创建文件夹引用”):Screenshot of project structure
然后,您可以在您的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)哪里
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
}https://stackoverflow.com/questions/41020087
复制相似问题