首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何本地化iMessage贴纸?

如何本地化iMessage贴纸?
EN

Stack Overflow用户
提问于 2016-12-07 22:31:43
回答 2查看 640关注 0票数 1

我正在创建一个iMessage贴纸包扩展,它具有包含文本的贴纸。我在Xcode中看不到任何本地化贴纸的选项?可以本地化贴纸吗?

EN

回答 2

Stack Overflow用户

发布于 2016-12-07 22:40:00

也许这是显而易见的,但是你可以在一个扩展中管理它。如果您创建的不是包,而是扩展,则可以为本地化获取准确的贴纸

票数 2
EN

Stack Overflow用户

发布于 2017-02-24 18:17:21

如果您希望根据设备的语言显示不同的贴纸资产,则需要创建一个iMessage应用程序,而不是贴纸包装应用程序。你需要写一些代码,因为在一个简单的Sticker Pack应用程序中不可能有这种行为。

然而,这非常简单。首先,请遵循以下教程:http://blog.qbits.eu/ios-10-stickers-application/

有些代码语法已经过时了,但是XCode可以帮助你轻松解决这个问题。

您可以将本地化的资源放在不同的文件夹中,并将它们拖放到XCode项目中(确保选中“创建文件夹引用”):Screenshot of project structure

然后,您可以在您的viewDidLoad()中执行以下操作

代码语言:javascript
复制
//-- 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)

哪里

代码语言:javascript
复制
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/a/5860015/6649403修改而来)

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41020087

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档