summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/Text/Pandoc/Writers/HTML.hs3
-rw-r--r--src/Text/Pandoc/Writers/OpenDocument.hs12
-rw-r--r--src/Text/Pandoc/Writers/Shared.hs14
3 files changed, 20 insertions, 9 deletions
diff --git a/src/Text/Pandoc/Writers/HTML.hs b/src/Text/Pandoc/Writers/HTML.hs
index 0d9346a07..9619e24ad 100644
--- a/src/Text/Pandoc/Writers/HTML.hs
+++ b/src/Text/Pandoc/Writers/HTML.hs
@@ -259,7 +259,7 @@ writeHtml' st opts d =
Just _ -> preEscapedText <$> writeHtmlString' st opts d
Nothing
| writerPreferAscii opts
- -> preEscapedText <$> writeHtmlString' st opts d
+ -> preEscapedText <$> writeHtmlString' st opts d
| otherwise -> do
(body, _) <- evalStateT (pandocToHtml opts d) st
return body
@@ -270,6 +270,7 @@ pandocToHtml :: PandocMonad m
-> Pandoc
-> StateT WriterState m (Html, Context Text)
pandocToHtml opts (Pandoc meta blocks) = do
+ lift $ setupTranslations meta
let slideLevel = fromMaybe (getSlideLevel blocks) $ writerSlideLevel opts
modify $ \st -> st{ stSlideLevel = slideLevel }
metadata <- metaToContext opts
diff --git a/src/Text/Pandoc/Writers/OpenDocument.hs b/src/Text/Pandoc/Writers/OpenDocument.hs
index a96c9cd1a..1c8417c47 100644
--- a/src/Text/Pandoc/Writers/OpenDocument.hs
+++ b/src/Text/Pandoc/Writers/OpenDocument.hs
@@ -21,14 +21,14 @@ import Data.Char (chr)
import Data.Foldable (find)
import Data.List (sortOn, sortBy, foldl')
import qualified Data.Map as Map
-import Data.Maybe (fromMaybe, isNothing)
+import Data.Maybe (isNothing)
import Data.Ord (comparing)
import qualified Data.Set as Set
import Data.Text (Text)
import qualified Data.Text as T
import Text.Collate.Lang (Lang (..), parseLang)
-import Text.Pandoc.Class.PandocMonad (PandocMonad, report, toLang)
-import Text.Pandoc.Translations (translateTerm, setTranslations)
+import Text.Pandoc.Class.PandocMonad (PandocMonad, report)
+import Text.Pandoc.Translations (translateTerm)
import Text.Pandoc.Definition
import qualified Text.Pandoc.Builder as B
import Text.Pandoc.Logging
@@ -237,11 +237,7 @@ handleSpaces s = case T.uncons s of
-- | Convert Pandoc document to string in OpenDocument format.
writeOpenDocument :: PandocMonad m => WriterOptions -> Pandoc -> m Text
writeOpenDocument opts (Pandoc meta blocks) = do
- let defLang = Lang "en" (Just "US") Nothing [] [] []
- lang <- case lookupMetaString "lang" meta of
- "" -> pure defLang
- s -> fromMaybe defLang <$> toLang (Just s)
- setTranslations lang
+ setupTranslations meta
let colwidth = if writerWrapText opts == WrapAuto
then Just $ writerColumns opts
else Nothing
diff --git a/src/Text/Pandoc/Writers/Shared.hs b/src/Text/Pandoc/Writers/Shared.hs
index 3d64f83f0..7a2fee7ec 100644
--- a/src/Text/Pandoc/Writers/Shared.hs
+++ b/src/Text/Pandoc/Writers/Shared.hs
@@ -43,6 +43,7 @@ module Text.Pandoc.Writers.Shared (
, toLegacyTable
, splitSentences
, ensureValidXmlIdentifiers
+ , setupTranslations
)
where
import Safe (lastMay)
@@ -68,6 +69,10 @@ import Text.Pandoc.XML (escapeStringForXML)
import Text.DocTemplates (Context(..), Val(..), TemplateTarget,
ToContext(..), FromContext(..))
import Text.Pandoc.Chunks (tocToList, toTOCTree)
+import Text.Collate.Lang (Lang (..))
+import Text.Pandoc.Class (PandocMonad, toLang)
+import Text.Pandoc.Translations (setTranslations)
+import Data.Maybe (fromMaybe)
-- | Create template Context from a 'Meta' and an association list
-- of variables, specified at the command line or in the writer.
@@ -608,3 +613,12 @@ walkAttr f = walk goInline . walk goBlock
Table (f attr) cap colspecs thead tbodies tfoot
goBlock (Div attr bs) = Div (f attr) bs
goBlock x = x
+
+-- | Set translations based on the `lang` in metadata.
+setupTranslations :: PandocMonad m => Meta -> m ()
+setupTranslations meta = do
+ let defLang = Lang "en" (Just "US") Nothing [] [] []
+ lang <- case lookupMetaString "lang" meta of
+ "" -> pure defLang
+ s -> fromMaybe defLang <$> toLang (Just s)
+ setTranslations lang