source: project/release/3/svnwiki-translations/trunk/svnwiki-translations.scm @ 12533

Last change on this file since 12533 was 12533, checked in by azul, 11 years ago

Importing svnwiki extensions.

  • Property svn:keywords set to id
File size: 2.6 KB
Line 
1; $id$
2;
3; License: GPL-3
4
5(declare (export))
6(use svnwiki-extensions-support iconv stream-ext srfi-1 srfi-40 orders format-modular html-stream posix)
7
8(define *languages*
9  '((es "Español")
10    (en "English")
11    (fr "Français")
12    (pt "Português")))
13
14(define (translations-links env)
15  (let-from-environment env (path-out-real path-in params)
16    (let* ((components (string-split path-out-real "/"))
17           (special (svnwiki-is-special? #f path-out-real))
18           (base-filename
19             (string-append
20               (stream->string (svnwiki-file-without-language (last components)))
21               "."))
22           (dir
23             (svnwiki-make-pathname
24               (cons path-in
25                     ((if special butlast identity)
26                      (butlast components)))))
27           (translations
28             (stream-filter
29               (lambda (file)
30                 (and (> (string-length file) (string-length base-filename))
31                      (substring=? base-filename file)
32                      (or (not (string=? file path-out-real))
33                          special)))
34               (if (directory? dir)
35                 (list->stream (directory dir))
36                 stream-null)))
37           (charset (svnwiki-encoding-for-file env))
38           (charset-convert
39             (if (string=? charset "utf-8")
40               identity
41               (let ((descriptor (iconv-open charset "utf-8")))
42                 (cut iconv descriptor <>)))))
43      (if (stream-null? translations)
44        (html-stream
45          (p (cdr (or (assoc 'none params) (cons #f (html-stream "No translations are available for this file."))))))
46        (html-stream
47          (ul
48            (stream-concatenate
49              (stream-map
50                (lambda (file)
51                  (html-stream
52                    ((li class "translationLink")
53                     ((a href
54                         (svnwiki-make-pathname
55                           (and special "..")
56                           file
57                           (mime->ending
58                             ((handler-mime (get-handler (environment env ((path path-out-real)))))
59                              path-in
60                              path-out-real))))
61                      (let* ((language (svnwiki-file-language file))
62                             (name (and language (assoc (stream->symbol language) *languages*))))
63                        (if name
64                          (charset-convert (cadr name))
65                          language))))))
66                translations))))))))
67
68(svnwiki-extension-define 'code-break 'translations translations-links)
Note: See TracBrowser for help on using the repository browser.