@@ -50,7 +50,8 @@ import Text.Pandoc.Shared (stringify)
5050import Text.Pandoc.UTF8 (fromStringLazy, fromTextLazy, toStringLazy)
5151import Text.Pandoc.Walk
5252import Text.Pandoc.Writers.OpenDocument (writeOpenDocument)
53−import Text.Pandoc.Writers.Shared (fixDisplayMath, getLang, splitLang)
53+import Text.Pandoc.Writers.Shared (fixDisplayMath, getLang, Lang(..),
54+ renderLang)
5455import Text.Pandoc.XML
5556import Text.TeXMath
5657import Text.XML.Light
@@ -79,7 +80,7 @@ pandocToODT :: PandocMonad m
7980pandocToODT opts doc@(Pandoc meta _) = do
8081 let datadir = writerUserDataDir opts
8182 let title = docTitle meta
82− let lang = getLang opts meta
83+ lang <- getLang opts meta
8384 refArchive <-
8485 case writerReferenceDoc opts of
8586 Just f -> liftM toArchive $ lift $ P.readFileLazy f
@@ -140,7 +141,7 @@ pandocToODT opts doc@(Pandoc meta _) = do
140141 $$
141142 case lang of
142143 Just l -> inTagsSimple "dc:language"
143− (text (escapeStringForXML l))
144+ (text (escapeStringForXML (renderLang l)))
144145 Nothing -> empty
145146 )
146147 )
@@ -153,10 +154,9 @@ pandocToODT opts doc@(Pandoc meta _) = do
153154 $ addEntryToArchive metaEntry archive'
154155 return $ fromArchive archive''
155156
156−updateStyleWithLang :: PandocMonad m => Maybe String -> Archive -> O m Archive
157+updateStyleWithLang :: PandocMonad m => Maybe Lang -> Archive -> O m Archive
157158updateStyleWithLang Nothing arch = return arch
158−updateStyleWithLang (Just l) arch = do
159− (mblang, mbcountry) <- splitLang l
159+updateStyleWithLang (Just lang) arch = do
160160 epochtime <- floor `fmap` (lift P.getPOSIXTime)
161161 return arch{ zEntries = [if eRelativePath e == "styles.xml"
162162 then case parseXMLDoc
@@ -166,16 +166,16 @@ updateStyleWithLang (Just l) arch = do
166166 toEntry "styles.xml" epochtime
167167 ( fromStringLazy
168168 . ppTopElement
169− . addLang mblang mbcountry $ d )
169+ . addLang lang $ d )
170170 else e
171171 | e <- zEntries arch] }
172172
173−addLang :: Maybe String -> Maybe String -> Element -> Element
174−addLang mblang mbcountry = everywhere' (mkT updateLangAttr)
175− where updateLangAttr (Attr n@(QName "language" _ (Just "fo")) l)
176− = Attr n (maybe l id mblang)
177− updateLangAttr (Attr n@(QName "country" _ (Just "fo")) c)
178− = Attr n (maybe c id mbcountry)
173+addLang :: Lang -> Element -> Element
174+addLang (Lang lang country) = everywhere' (mkT updateLangAttr)
175+ where updateLangAttr (Attr n@(QName "language" _ (Just "fo")) _)
176+ = Attr n lang
177+ updateLangAttr (Attr n@(QName "country" _ (Just "fo")) _)
178+ = Attr n country
179179 updateLangAttr x = x
180180
181181-- | transform both Image and Math elements