# reflex-localize Library provides helpers for dynamic strings that depends on current selected language. # How to use First, you should define which languages your app supports: ``` haskell module App.Language( Language(..) , module Reflex.Localize ) where import Reflex.Localize import Reflex.Localize.Language data instance Language = English | Russian ``` Second, define enumeration for strings ids. ``` haskell module App.Localization( module App.Localization , module App.Language ) where import App.Language data AboutPageStrings = AboutTitle | AboutVersion | AboutLicence | AboutHomepage | AboutDevelopers instance LocalizedPrint AboutPageStrings where localizedShow l v = case l of English -> case v of AboutTitle -> "About" AboutVersion -> "Version" AboutLicence -> "Licence" AboutHomepage -> "Homepage" AboutDevelopers -> "Developers" Russian -> case v of AboutTitle -> "О продукте" AboutVersion -> "Версия" AboutLicence -> "Лицензия" AboutHomepage -> "Сайт" AboutDevelopers -> "Разработчики" ``` You can either collect all strings to one data sum or split strings for each widget. Finally, you should implement `MonadLocalized` type class in you application monad. We suggest using monad transformer `LocalizeT` via `runLocalize` function: ``` haskell runLocalize :: (Reflex t, TriggerEvent t m, MonadIO m) => Language -> LocalizeT t m a -> m a ```