diff --git a/portfolio/en/radio.html b/portfolio/en/radio.html index 296b4f3..1814228 100644 --- a/portfolio/en/radio.html +++ b/portfolio/en/radio.html @@ -41,7 +41,7 @@ $endfor$ $for(fielddays)$ - $date$ + $formatted_date$ $title$
$if(pota-locator)$POTA: $pota-locator$ $endif$ $if(wwff-locator)$WW-FF: $wwff-locator$ $endif$ $mode$ - $bands$ - $antenna$ antenna
$transceiver$ $total-unique-qso$ diff --git a/portfolio/jp/radio.html b/portfolio/jp/radio.html index 93ec2cc..2b1e453 100644 --- a/portfolio/jp/radio.html +++ b/portfolio/jp/radio.html @@ -41,7 +41,7 @@ $endfor$ $for(fielddays)$ - $date$ + $formatted_date$ $title$
$if(pota-locator)$POTA: $pota-locator$ $endif$ $if(wwff-locator)$WW-FF: $wwff-locator$ $endif$ $mode$ - $bands$ - $antenna$ アンテナ
$transceiver$ $total-unique-qso$ diff --git a/portfolio/nl/radio.html b/portfolio/nl/radio.html index c4797f6..37022e1 100644 --- a/portfolio/nl/radio.html +++ b/portfolio/nl/radio.html @@ -41,7 +41,7 @@ $endfor$ $for(fielddays)$ - $date$ + $formatted_date$ $title$
$if(pota-locator)$POTA: $pota-locator$ $endif$ $if(wwff-locator)$WW-FF: $wwff-locator$ $endif$ $mode$ - $bands$ - $antenna$ antenne
$transceiver$ $total-unique-qso$ diff --git a/portfolio/site.hs b/portfolio/site.hs index 704a792..bdca600 100644 --- a/portfolio/site.hs +++ b/portfolio/site.hs @@ -35,10 +35,11 @@ main = hakyll $ do identifier <- getUnderlying metadata <- getMetadata identifier let language = lookupString "language" metadata + let lang = fromMaybe "en" language pandocCompiler - >>= loadAndApplyTemplate "templates/post.html" (postCtx language) - >>= loadAndApplyTemplate "templates/default.html" (postCtx language) + >>= loadAndApplyTemplate "templates/post.html" (postCtx lang) + >>= loadAndApplyTemplate "templates/default.html" (postCtx lang) >>= relativizeUrls match "events/*" $ do @@ -47,10 +48,11 @@ main = hakyll $ do identifier <- getUnderlying metadata <- getMetadata identifier let language = lookupString "language" metadata + let lang = fromMaybe "en" language pandocCompiler - >>= loadAndApplyTemplate "templates/event.html" (postCtx language) - >>= loadAndApplyTemplate "templates/default.html" (postCtx language) + >>= loadAndApplyTemplate "templates/event.html" (postCtx lang) + >>= loadAndApplyTemplate "templates/default.html" (postCtx lang) >>= relativizeUrls match "pages/en/japan/language/**" $ do @@ -59,10 +61,11 @@ main = hakyll $ do identifier <- getUnderlying metadata <- getMetadata identifier let language = lookupString "language" metadata + let lang = fromMaybe "en" language pandocCompiler - >>= loadAndApplyTemplate "templates/japan-language-note.html" (postCtx language) - >>= loadAndApplyTemplate "templates/default.html" (postCtx language) + >>= loadAndApplyTemplate "templates/japan-language-note.html" (postCtx lang) + >>= loadAndApplyTemplate "templates/default.html" (postCtx lang) >>= relativizeUrls match "pages/*/plamo/equipment/**" $ do @@ -71,10 +74,11 @@ main = hakyll $ do identifier <- getUnderlying metadata <- getMetadata identifier let language = lookupString "language" metadata + let lang = fromMaybe "en" language pandocCompiler - >>= loadAndApplyTemplate "templates/equipment.html" (postCtx language) - >>= loadAndApplyTemplate "templates/default.html" (postCtx language) + >>= loadAndApplyTemplate "templates/equipment.html" (postCtx lang) + >>= loadAndApplyTemplate "templates/default.html" (postCtx lang) >>= relativizeUrls match "pages/*/plamo/model-kits/**" $ do @@ -83,16 +87,17 @@ main = hakyll $ do identifier <- getUnderlying metadata <- getMetadata identifier let language = lookupString "language" metadata + let lang = fromMaybe "en" language let dateValue = lookupString "date" metadata purchaseDateValue = lookupString "purchase_date" metadata - formattedPurchaseDate = maybe "" formatDate purchaseDateValue + formattedPurchaseDate = maybe "" (formatDate lang) purchaseDateValue modelKitTemplate = if dateValue == Just "1990-01-01" then "templates/model-kit-not-ready.html" else "templates/model-kit.html" - extendedCtx = constField "formatted_purchase_date" formattedPurchaseDate <> (postCtx language) + extendedCtx = constField "formatted_purchase_date" formattedPurchaseDate <> (postCtx lang) pandocCompiler >>= loadAndApplyTemplate modelKitTemplate extendedCtx @@ -105,10 +110,11 @@ main = hakyll $ do identifier <- getUnderlying metadata <- getMetadata identifier let language = lookupString "language" metadata + let lang = fromMaybe "en" language pandocCompiler - >>= loadAndApplyTemplate "templates/radio.html" (postCtx language) - >>= loadAndApplyTemplate "templates/default.html" (postCtx language) + >>= loadAndApplyTemplate "templates/radio.html" (postCtx lang) + >>= loadAndApplyTemplate "templates/default.html" (postCtx lang) >>= relativizeUrls match "pages/*/software/**" $ do @@ -117,10 +123,11 @@ main = hakyll $ do identifier <- getUnderlying metadata <- getMetadata identifier let language = lookupString "language" metadata + let lang = fromMaybe "en" language pandocCompiler - -- >>= loadAndApplyTemplate "templates/software-post.html" (postCtx language) - >>= loadAndApplyTemplate "templates/default.html" (postCtx language) + -- >>= loadAndApplyTemplate "templates/software-post.html" (postCtx lang) + >>= loadAndApplyTemplate "templates/default.html" (postCtx lang) >>= relativizeUrls create ["archive.html"] $ do @@ -133,7 +140,7 @@ main = hakyll $ do posts <- recentFirst =<< loadAll "posts/*" let archiveCtx = - listField "posts" (postCtx language) (return posts) <> + listField "posts" (postCtx lang) (return posts) <> constField "title" "Archives" <> constField "language" lang <> langDict lang <> @@ -151,19 +158,16 @@ main = hakyll $ do ]) $ do route idRoute compile $ do - -- ident <- getUnderlying - -- language <- getMetadataField' ident "language" - identifier <- getUnderlying metadata <- getMetadata identifier let language = lookupString "language" metadata let lang = fromMaybe "en" language - let urla = "pages/" ++ lang ++ "/plamo/model-kits/**" - kits <- recentFirst =<< loadAll (fromGlob (urla)) + let url = "pages/" ++ lang ++ "/plamo/model-kits/**" + kits <- recentFirst =<< loadAll (fromGlob (url)) let plamoCtx = - listField "kits" kitCtx (return kits) <> + listField "kits" (kitCtx lang) (return kits) <> langDict lang <> defaultContext @@ -187,7 +191,7 @@ main = hakyll $ do notes <- loadAll "pages/en/japan/language/notes/*" let japanCtx = - listField "notes" (postCtx language) (return notes) <> + listField "notes" (postCtx lang) (return notes) <> langDict lang <> defaultContext @@ -213,8 +217,8 @@ main = hakyll $ do fielddays <- recentFirst fielddays let radioCtx = - listField "antenna" (postCtx language) (return antenna) <> - listField "fielddays" (postCtx language) (return fielddays) <> + listField "antenna" (postCtx lang) (return antenna) <> + listField "fielddays" (postCtx lang) (return fielddays) <> langDict lang <> defaultContext @@ -239,7 +243,7 @@ main = hakyll $ do projects <- recentFirst projects let softwareCtx = - listField "projects" (postCtx language) (return projects) <> + listField "projects" (postCtx lang) (return projects) <> langDict lang <> defaultContext @@ -263,7 +267,7 @@ main = hakyll $ do blazorPages <- loadAll "pages/en/software/code/blazor/*" let softwareCtx = - listField "blazorPages" (postCtx language) (return blazorPages) <> + listField "blazorPages" (postCtx lang) (return blazorPages) <> langDict lang <> defaultContext @@ -287,7 +291,7 @@ main = hakyll $ do elmPages <- loadAll "pages/en/software/code/elm/*" let softwareCtx = - listField "elmPages" (postCtx language) (return elmPages) <> + listField "elmPages" (postCtx lang) (return elmPages) <> langDict lang <> defaultContext @@ -311,7 +315,7 @@ main = hakyll $ do haskellPages <- loadAll "pages/en/software/code/haskell/*" let softwareCtx = - listField "haskellPages" (postCtx language) (return haskellPages) <> + listField "haskellPages" (postCtx lang) (return haskellPages) <> langDict lang <> defaultContext @@ -335,7 +339,7 @@ main = hakyll $ do equipment <- loadAll $ (fromGlob ("pages/" ++ lang ++ "/plamo/equipment/*")) let equipmentCtx = - listField "equipment" (postCtx language) (return equipment) <> + listField "equipment" (postCtx lang) (return equipment) <> langDict lang <> defaultContext @@ -393,8 +397,8 @@ main = hakyll $ do let indexCtx = -- (<> is the modern version of `mappend`.) - listField "posts" (postCtx language) (return posts) <> - listField "events" (postCtx language) (return events) <> + listField "posts" (postCtx lang) (return posts) <> + listField "events" (postCtx lang) (return events) <> langDict lang <> defaultContext @@ -413,29 +417,69 @@ staticPageContext = langDict "en" <> defaultContext -formatDate :: String -> String -formatDate s = +localeFor :: String -> TimeLocale +localeFor "nl" = dutchLocale +localeFor "jp" = japaneseLocale +localeFor _ = defaultTimeLocale + +dutchLocale :: TimeLocale +dutchLocale = defaultTimeLocale + { months = + [ ("januari", "jan"), ("februari", "feb"), ("maart", "mrt") + , ("april", "apr"), ("mei", "mei"), ("juni", "jun") + , ("juli", "jul"), ("augustus", "aug"), ("september", "sep") + , ("oktober", "okt"), ("november", "nov"), ("december", "dec") + ] + } + +japaneseLocale :: TimeLocale +japaneseLocale = defaultTimeLocale + { months = + [ ("1月","1月"), ("2月","2月"), ("3月","3月") + , ("4月","4月"), ("5月","5月"), ("6月","6月") + , ("7月","7月"), ("8月","8月"), ("9月","9月") + , ("10月","10月"), ("11月","11月"), ("12月","12月") + ] + } + +formatStringFor :: String -> String +formatStringFor "en" = "%e %B %Y" +formatStringFor "nl" = "%e %B %Y" +formatStringFor "jp" = "%Y年 %m月 %e日" +formatStringFor _ = "%e %B %Y" + +formatDate :: String -> String -> String +formatDate lang s = case parseTimeM True defaultTimeLocale "%Y-%m-%d" s :: Maybe Day of - Just day -> formatTime defaultTimeLocale "%e %B %Y" day + Just day -> formatTime (localeFor lang) (formatStringFor lang) day Nothing -> s -postCtx :: Maybe String -> Context String +postCtx :: String -> Context String postCtx language = - let lang = fromMaybe "en" language - in + let + -- Custom field for formatted date + formattedDateField :: Context String + formattedDateField = field "formatted_date" $ \item -> do + -- Get the metadata for this item + meta <- getMetadata (itemIdentifier item) + let mDate = lookupString "date" meta + return $ maybe "" (formatDate language) mDate + + in -- Keep the original "date" field. dateField "date" "%e %B %Y" <> - constField "language" lang <> - langDict lang <> + constField "language" language <> + formattedDateField <> + langDict language <> defaultContext -kitCtx :: Context String -kitCtx = +kitCtx :: String -> Context String +kitCtx language = (field "formatted_purchase_date" $ \item -> do metadata <- getMetadata (itemIdentifier item) let purchaseDateValue = lookupString "purchase_date" metadata - return $ maybe "" formatDate purchaseDateValue + return $ maybe "" (formatDate language) purchaseDateValue ) - <> postCtx Nothing + <> (postCtx language) isUpcoming :: UTCTime -> Item a -> Compiler Bool isUpcoming cutoff item = do diff --git a/portfolio/templates/event.html b/portfolio/templates/event.html index 732149b..3f7c31b 100644 --- a/portfolio/templates/event.html +++ b/portfolio/templates/event.html @@ -1,6 +1,6 @@
- Posted on $date$ + Posted on $formatted_date$ $if(author)$ by $author$ $endif$ diff --git a/portfolio/templates/events.html b/portfolio/templates/events.html index 0807e0f..2ad295f 100644 --- a/portfolio/templates/events.html +++ b/portfolio/templates/events.html @@ -1,7 +1,7 @@ diff --git a/portfolio/templates/model-kit.html b/portfolio/templates/model-kit.html index f5c2d59..d97efdd 100644 --- a/portfolio/templates/model-kit.html +++ b/portfolio/templates/model-kit.html @@ -1,7 +1,7 @@
$text-plamo-back$
- Posted on: $date$ + Posted on: $formatted_date$

diff --git a/portfolio/templates/model-kits.html b/portfolio/templates/model-kits.html index dd23c2d..41aee66 100644 --- a/portfolio/templates/model-kits.html +++ b/portfolio/templates/model-kits.html @@ -9,7 +9,7 @@

- $date$
+ $formatted_date$
$model_name$
$scale$
$if(series)$ diff --git a/portfolio/templates/post-list.html b/portfolio/templates/post-list.html index 71cf1b9..226daf7 100644 --- a/portfolio/templates/post-list.html +++ b/portfolio/templates/post-list.html @@ -1,7 +1,7 @@

    $for(posts)$
  • - $title$ - $date$ + $title$ - $formatted_date$
  • $endfor$
diff --git a/portfolio/templates/post.html b/portfolio/templates/post.html index 732149b..3f7c31b 100644 --- a/portfolio/templates/post.html +++ b/portfolio/templates/post.html @@ -1,6 +1,6 @@
- Posted on $date$ + Posted on $formatted_date$ $if(author)$ by $author$ $endif$ diff --git a/portfolio/templates/radio.html b/portfolio/templates/radio.html index ec692cd..26d777f 100644 --- a/portfolio/templates/radio.html +++ b/portfolio/templates/radio.html @@ -1,7 +1,7 @@
$text-radio-back$
- Posted on $date$ + Posted on $formatted_date$
$body$ diff --git a/portfolio/templates/recent-posts.html b/portfolio/templates/recent-posts.html index 71cf1b9..d5e5edc 100644 --- a/portfolio/templates/recent-posts.html +++ b/portfolio/templates/recent-posts.html @@ -1,7 +1,7 @@
    $for(posts)$
  • - $title$ - $date$ + $formatted_date$ - $title$
  • $endfor$