diff options
author | Teddy Wing | 2017-08-19 09:29:08 +0200 |
---|---|---|
committer | Teddy Wing | 2017-08-19 09:29:08 +0200 |
commit | abbe2141c56aaab9cf8b4913803c66096728ac16 (patch) | |
tree | 95689266bad0580296d8ef1dec229f06fe0010e7 /src/I18n.hs | |
parent | 6cd279630923cdcd053e373b56b8bc0ad85a9b08 (diff) | |
download | sorbot-abbe2141c56aaab9cf8b4913803c66096728ac16.tar.bz2 |
Try to get I18n working
An unsuccessful attempt at getting i18n working through Shakespeare. Had
a little help from:
https://gist.github.com/nicolashery/f87467fb37da2b00cec1eed028f51e60
Unfortunately, I can't figure out how to get this working. Even before,
without the locale stuff and defining a custom `translate` function,
when I tried using Shakespeare's `_{}` function, I was, and still am,
getting this error:
src/Plugin/GitHubCommit.hs:38:29: error:
Data constructor not in scope: MsgGitHubCommitRepoURLNotFound
Yes, obviously, that makes sense. But how do I get it to be in scope if
it isn't even in my code? What?
I'm giving up on Shakespeare for i18n. It was a nice idea, I liked the
fact that strings were stored in external files, but I don't know how to
do this, I can't find the right resources online to use this in a
non-web non-template context, and it's becoming a pain. Going to get rid
of all this code and just use regular Haskell data types to do it as
described in
https://wiki.haskell.org/Internationalization_of_Haskell_programs
Diffstat (limited to 'src/I18n.hs')
-rw-r--r-- | src/I18n.hs | 21 |
1 files changed, 19 insertions, 2 deletions
diff --git a/src/I18n.hs b/src/I18n.hs index 9b9f870..988c823 100644 --- a/src/I18n.hs +++ b/src/I18n.hs @@ -1,13 +1,30 @@ +{-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE MultiParamTypeClasses #-} {-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE TemplateHaskell #-} -module I18n where +module I18n + ( Locale(..) + , RenderMessage + + , mkMessage + , translate + ) where import qualified Data.Text as T -import Text.Shakespeare.I18N (mkMessage, renderMessage) +import Text.Shakespeare.I18N (mkMessage, renderMessage, RenderMessage) data Bot = Bot +data Locale = EN | FR + +toISOLocale :: Locale -> T.Text +toISOLocale EN = "en" +toISOLocale FR = "fr" + mkMessage "Bot" "messages" "en" + +translate :: (RenderMessage Bot b) => Locale -> b -> T.Text +translate locale message = + renderMessage Bot [(toISOLocale locale)] message |