Yesod 本地化

Localization in Yesod

我使用来自 yesod 的应用程序本地化(模块 Text.Shakespeare.I18N)。 下面是代码示例

data STest = STest
mkMessage "STest" "messages" ("ru")
trMsg msg  = renderMessage STest ["ru"] msg

但如果我想同时使用多个本地化,我会尝试

mkMessage "STest" "messages" ("ru")
mkMessage "STest" "messages" ("en")

mkMessage "STest" "messages" ("ru", "en")

这个决定是错误的! 如何同时使用多个本地化?

预先感谢您的帮助!

我认为 yesod book 有一个应该可以准确解决您的问题的示例、两种语言(希伯来语、英语)和应该显示的消息。

documentation 也很清楚mkMessages 函数

mkMessage

:: String base name to use for translation type
-> FilePath subdirectory which contains the translation files
-> Lang default translation language
-> Q [Dec] generate translations from translation files

This function will:

look in the supplied subdirectory for files ending in .msg generate a type based on the constructors found create a RenderMessage instance

所以您正在尝试使用多种默认语言 - 这是不可能的。请阅读我提供给 yesod 书的 link - 我希望这能解决您所有的问题。