about summary refs log tree commit diff
diff options
context:
space:
mode:
authorArun Isaac2020-03-13 21:34:59 +0530
committerArun Isaac2020-03-13 21:34:59 +0530
commit541c50ac77de673c8039c83dde409e4524787faf (patch)
tree2fce76b845bafb22be6d4df6e04ec5ad1362a762
parentc761096d9de1faff4c0c4264b7cad2085552e73a (diff)
downloadennum-541c50ac77de673c8039c83dde409e4524787faf.tar.gz
ennum-541c50ac77de673c8039c83dde409e4524787faf.tar.lz
ennum-541c50ac77de673c8039c83dde409e4524787faf.zip
Use appropriate time locale when exporting pages.
We set the appropriate time locale so that dates are exported
in the correct language.

* ennu.el (ennu-publish-post, ennu-publish-index): Set time locale
according to language of the page.
(ennu-setting): Introduce :locale-alist mapping languages to their
locales. Use C locale for English pages as the default :locale-alist.
-rw-r--r--ennu.el90
1 files changed, 46 insertions, 44 deletions
diff --git a/ennu.el b/ennu.el
index 8481ebd..613f61a 100644
--- a/ennu.el
+++ b/ennu.el
@@ -112,10 +112,12 @@ last form in BODY."
        (lambda (&rest output-files)
          (seq-mapn
           (lambda (post output-file)
-            (ennu-with-file-contents (ennu-post-filename post)
-              (org-export-to-file
-                  'ennu-html output-file nil nil nil nil
-                  (list :translations (seq-remove (apply-partially 'equal post) posts)))))
+            (let ((system-time-locale (map-elt (ennu-setting :locale-alist)
+                                               (ennu-post-language post) nil 'string=)))
+              (ennu-with-file-contents (ennu-post-filename post)
+                (org-export-to-file
+                    'ennu-html output-file nil nil nil nil
+                    (list :translations (seq-remove (apply-partially 'equal post) posts))))))
           posts
           output-files))))
      (ennu--filter-map
@@ -183,44 +185,43 @@ last form in BODY."
                              page-numbers))
      :publish
      (lambda (home-page &rest output-files)
-       (seq-mapn
-        (lambda (posts page-number output-file)
-          (with-temp-buffer
-            (insert (format "#+TITLE: %s\n" title))
-            (insert (format "#+LANGUAGE: %s\n" tongue))
-            (insert "#+OPTIONS: num:nil toc:nil\n\n")
-            (seq-do (lambda (post)
-                      (insert (format "* [[post:%s]]\n" (ennu-post-slug post)))
-                      (insert (format-time-string
-                               "/%b %e, %Y/\n\n"
-                               (ennu-post-date post)))
-                      (when-let ((thumbnail (ennu-post-thumbnail post)))
-                        (insert (format "[[thumbnail:%s]]\n\n" thumbnail)))
-                      (when-let ((summary (ennu-post-summary post)))
-                        (insert summary)
-                        (insert "\n\n"))
-                      (when-let ((tags (ennu-post-tags post)))
-                        (insert "Tags: ")
-                        (insert
-                         (string-join
-                          (seq-map (lambda (tag)
-                                     (format "[[tag:%s][%s]]" (ennu-add-tongue-suffix tag tongue) tag))
-                                   tags)
-                          ", "))
-                        (insert "\n\n")))
-                    posts)
-            (unless (= page-number 1)
-              (insert (format "[[./%s][Newer posts]]\n"
-                              (ennu-index-filename (file-name-nondirectory filename-prefix)
-                                                   tongue nil (1- page-number)))))
-            (unless (= page-number number-of-pages)
-              (insert (format "[[./%s][Older posts]]\n"
-                              (ennu-index-filename (file-name-nondirectory filename-prefix)
-                                                   tongue nil (1+ page-number)))))
-            (org-export-to-file 'html output-file)))
-        (seq-partition posts posts-per-page)
-        page-numbers
-        output-files)
+       (let ((system-time-locale (map-elt (ennu-setting :locale-alist) tongue nil 'string=)))
+         (seq-mapn
+          (lambda (posts page-number output-file)
+            (with-temp-buffer
+              (insert (format "#+TITLE: %s\n" title))
+              (insert (format "#+LANGUAGE: %s\n" tongue))
+              (insert "#+OPTIONS: num:nil toc:nil\n\n")
+              (seq-do (lambda (post)
+                        (insert (format "* [[post:%s]]\n" (ennu-post-slug post)))
+                        (insert (format-time-string "/%b %e, %Y/\n\n" (ennu-post-date post)))
+                        (when-let ((thumbnail (ennu-post-thumbnail post)))
+                          (insert (format "[[thumbnail:%s]]\n\n" thumbnail)))
+                        (when-let ((summary (ennu-post-summary post)))
+                          (insert summary)
+                          (insert "\n\n"))
+                        (when-let ((tags (ennu-post-tags post)))
+                          (insert "Tags: ")
+                          (insert
+                           (string-join
+                            (seq-map (lambda (tag)
+                                       (format "[[tag:%s][%s]]" (ennu-add-tongue-suffix tag tongue) tag))
+                                     tags)
+                            ", "))
+                          (insert "\n\n")))
+                      posts)
+              (unless (= page-number 1)
+                (insert (format "[[./%s][Newer posts]]\n"
+                                (ennu-index-filename (file-name-nondirectory filename-prefix)
+                                                     tongue nil (1- page-number)))))
+              (unless (= page-number number-of-pages)
+                (insert (format "[[./%s][Older posts]]\n"
+                                (ennu-index-filename (file-name-nondirectory filename-prefix)
+                                                     tongue nil (1+ page-number)))))
+              (org-export-to-file 'html output-file)))
+          (seq-partition posts posts-per-page)
+          page-numbers
+          output-files))
        (copy-file (first output-files) home-page)))))
 
 (defun ennu--absolute-uri (path)
@@ -279,8 +280,8 @@ last form in BODY."
     ((or :atom-feed-number-of-posts :atom-feed-file
          :blog-scheme :default-image-width
          :image-link-width :index-posts-per-page
-         :other-files-directory :tag-directory
-         :thumbnail-image-width)
+         :locale-alist :other-files-directory
+         :tag-directory :thumbnail-image-width)
      (plist-get (org-combine-plists
                  (list :atom-feed-number-of-posts 12
                        :atom-feed-file "blog.atom"
@@ -288,6 +289,7 @@ last form in BODY."
                        :default-image-width 640
                        :image-link-width 1024
                        :index-posts-per-page 12
+                       :locale-alist '(("en" . "C"))
                        :tag-directory "tag"
                        :thumbnail-image-width 320)
                  ennu-blog)