gpt4 book ai didi

ios - 应用程序如何将存储的通知显示为本地化字符串?

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:02:14 26 4
gpt4 key购买 nike

我正在尝试本地化我的应用程序,并注意到 Twitter 和 Facebook 等应用程序会立即切换存储在服务器上的先前通知中使用的语言以匹配设备语言。他们是怎么做到的?

例如,有人对帖子发表评论,因此通知是:

John commented "hi" on your post.

如果我的设备语言设置为法语,它稍后会被翻译成法语。

他们会存储一个本地化的字符串,例如:

%@ commented %@ on your post.

然后以某种方式在通知中引用该字符串以及变量?

最佳答案

有很多与本地化相关的工具,其中之一是 Phraseapp .这些工具的工作方式相当简单,本地化主要由前端驱动,而非后端。

您为某些内容定义一个键,该键也可以接受参数。因此,在您的示例中,它可能如下所示。

英语: user_commented_message = %@ commented %@ on your post.

德语: user_commented_message = %@ Kommentierte %@ auf Ihrem Beitrag。

然后将其保存到您的 Localizable.strings 中,这是您的应用程序二进制文件随附的内容。

本地化完成后,您需要做的就是为您的通知创建正确的负载。在您的示例中,它看起来类似于以下内容:

{
aps = {
alert = {
"loc-args" = (
"John",
"hi"
);
"loc-key" = "user_commented_message";
};
badge = 1;
sound = default;
};
}

如您所见,您在 loc-args 部分传递了 2 个参数,您几乎在其中定义了应该显示的内容,而不是 key 中的 %@ .参数的顺序很重要,它们将以与 loc-args 部分相同的顺序替换 %@

loc-key 部分,您几乎可以定义应该使用 Localizable.strings 中的键。从此,通知中心将仅根据设备语言设置显示通知,读取本地化词典的内容,与Twitter或Facebook服务器无关。

要进一步阅读,我建议您查看 Apple notification programming guide .

编辑

  1. This帖子说你不能同时使用 bodyloc-args 。这是一种排他性的 EITHER ONE 或 OTHER 关系。

  2. 如果它在您的应用程序中,而不是简单地使用本地化。不要在服务器上发送硬编码语言内容或存储硬编码语言文本,始终使用带有本地化 key 的每个文本内容。它仍然是前端驱动,服务器应该只保留本地化的 key ,而不是内容本身。

关于ios - 应用程序如何将存储的通知显示为本地化字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41282348/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com