3

インターネット、Yesod Web 電子ブック、およびその他のチュートリアル ( Yesod チュートリアル) で検索しましたが、この問題を明確にすることはできませんでした。足場サイトを利用しています。

内部には値、ユーザーが認証されている場合は電子メール、認証されていない場合は文字列が返されます。私が望むのは、文字列「(Unknown User ID)」の代わりにローカライズされたメッセージを返すことです。私の問題は、メッセージ ファイル (例: MsgHello) の値を使用することです。これを行うと、次のようなエラーが返されます。

AppMessage' with actual type予期されるタイプのテキストと一致しませんでした'

(show MsgHello)または(pack MsgHello)を使用してみましたが、 msg <- getMessageRenderを呼び出しても、期待どおりの結果が得られませんでした。提案があれば、大歓迎です。

ありがとう!!

PD: これは、私が取り組んでいるコードの一部です。

getUserProfileR :: Handler RepHtml
getUserProfileR = do        
    maid <- maybeAuth
    let user = case maid of
                    Nothing -> "(Unknown User ID)"
                    Just (Entity _ u) -> userEmail u
    defaultLayout $ do
        setTitleI MsgUserProfile
        $(widgetFile "nhUserProfile")
4

2 に答える 2

2

このモジュールについての私の理解は、I18Nあなたが自分のAppMessage価値を取り入れてそれを利用renderMessageしたいということです。

メッセージだけでなく、翻訳タイプと言語のリストを指定するタイプを渡す必要があります。翻訳タイプはmkMessage関数を使用して作成され、言語のリストはのようになり["en-US", "en-GB", "fr"]ます。

于 2013-03-21T16:55:43.080 に答える