Add website pages and translations

Julien LepillerWed May 15 10:30:32+0200 2019

bb7905b

Add website pages and translations

css/device.css unknown status 1

1+
@media (max-width: 900px) {
2+
  footer > * {
3+
    padding: 5px;
4+
    width: auto;
5+
  }
6+
  .footer-flex {
7+
    display: block;
8+
  }
9+
  .article {
10+
    padding: 5px;
11+
    width: auto;
12+
  }
13+
14+
  #features {
15+
    display: block;
16+
    width: auto;
17+
  }
18+
}
19+
20+
@media (max-width: 800px) {
21+
  #hamburger-label {
22+
    display: block;
23+
    color: var(--black);
24+
    position: absolute;
25+
    right: 2em;
26+
    top: 20px;
27+
  }
28+
29+
  #hamburger-label img {
30+
    height: 32px;
31+
  }
32+
33+
  #hamburger ~ ul {
34+
    display: none;
35+
  }
36+
37+
  #hamburger:checked ~ ul {
38+
    display: block;
39+
  }
40+
41+
  header {
42+
    align-items: start;
43+
  }
44+
45+
  header span {
46+
    font-size: 2.7em;
47+
  }
48+
49+
  #hero {
50+
    background: url('/images/screen.png') no-repeat -70px -50px #dde2dd;
51+
    background-size: 300px;
52+
    padding-bottom: 15px;
53+
    padding-left: 15px;
54+
    position: absolute;
55+
    top: 0px;
56+
  }
57+
58+
  #hero h1 {
59+
    text-align: right;
60+
    margin-top: 6em;
61+
    text-shadow: 1px 1px #00574B
62+
  }
63+
64+
  #after-hero {
65+
    margin-top: 10em;
66+
  }
67+
}

css/nani.css unknown status 1

1+
html, body {
2+
  padding: 0;
3+
  margin: 0;
4+
  background-color: #f8fdfa;
5+
}
6+
7+
html {
8+
  height: 100%;
9+
}
10+
11+
body {
12+
  min-height: 100%;
13+
  display: flex;
14+
  flex-direction: column;
15+
  color: #555;
16+
}
17+
18+
header {
19+
  background-color: rgba(0,87,75,0.7);
20+
  color: #f8fdfa;
21+
  padding: 15px;
22+
  display: flex;
23+
  align-items: center;
24+
  font-size: 1.1em;
25+
  font-variant: small-caps;
26+
  z-index: 1;
27+
}
28+
29+
header ul {
30+
  list-style: none;
31+
}
32+
33+
header ul li {
34+
  display: inline-block;
35+
}
36+
37+
header a {
38+
  color: inherit;
39+
  display: inline-block;
40+
  padding: 15px;
41+
  text-decoration: none;
42+
}
43+
44+
header span {
45+
  flex: 1;
46+
  font-weight: bold;
47+
  font-size: 3em;
48+
}
49+
50+
#hamburger, #hamburger-label {
51+
  display: none;
52+
}
53+
54+
a:hover {
55+
  color: #D81B60;
56+
}
57+
58+
a {
59+
  text-decoration: none;
60+
  color: #008755;
61+
}
62+
63+
footer {
64+
  background-color: #008577;
65+
  color: #e8edea;
66+
  padding: 15px;
67+
  margin-top: 5em;
68+
}
69+
70+
footer > * {
71+
  width: 900px;
72+
  margin: auto;
73+
}
74+
75+
footer a {
76+
  color: inherit;
77+
  text-decoration: underline;
78+
}
79+
80+
footer p {
81+
  text-align: justify;
82+
}
83+
84+
.footer-flex {
85+
  display: flex;
86+
  flex-direction: row;
87+
}
88+
89+
.footer-flex p:first-child {
90+
  flex: 1;
91+
}
92+
93+
#page {
94+
  flex: 1;
95+
}
96+
97+
#hero {
98+
  background: url('/images/screen.png') no-repeat -50px -100px #dde2dd;
99+
  padding: 15px;
100+
  padding-left: 600px;
101+
  padding-bottom: 60px;
102+
  color: #f8fdfa;
103+
  position: relative;
104+
  top: -140px;
105+
  left: 0px;
106+
}
107+
108+
#hero h1 {
109+
  text-align: left;
110+
  font-size: 2em;
111+
  font-weight: bold;
112+
  font-family: sans;
113+
  text-shadow: 2px 2px #00574B;
114+
  margin-top: 8em;
115+
}
116+
117+
#hero ~ *:first-child {
118+
  margin-top: 10em;
119+
}
120+
121+
#hero nav {
122+
  display: flex;
123+
  align-items: center;
124+
  align-content: center;
125+
  color: #D81B60;
126+
  font-size: 3em;
127+
}
128+
129+
#hero nav span {
130+
  padding-left: 20px;
131+
  padding-right: 20px;
132+
}
133+
134+
#hero img {
135+
  width: 180px;
136+
}
137+
138+
h1 {
139+
  text-align: center;
140+
  font-size: 2.5em;
141+
  color: #D81B60;
142+
}
143+
144+
h2 {
145+
  font-size: 2em;
146+
  color: #D81B60;
147+
  text-align: center;
148+
}
149+
150+
p {
151+
  text-align: center;
152+
}
153+
154+
p, .article {
155+
  font-size: 1.1em;
156+
}
157+
158+
h3 {
159+
  font-size: 1.5em;
160+
  text-align: left;
161+
  padding: 10px;
162+
  margin: 10px;
163+
  border-bottom: 3px solid #D81B60;
164+
}
165+
166+
.article h2 {
167+
  font-size: 2em;
168+
  text-align: left;
169+
  border-bottom: 3px solid #D81B60;
170+
  color: inherit;
171+
  padding: 0px;
172+
  margin: 0px;
173+
}
174+
175+
.article h3 {
176+
  border: none;
177+
  font-size: 1.5em;
178+
  text-align: left;
179+
  color: #D81B60;
180+
  padding: 0px;
181+
  margin: 0px;
182+
}
183+
184+
#features {
185+
  display: flex;
186+
  flex-direction: row;
187+
  width: 900px;
188+
  margin: auto;
189+
}
190+
191+
#features div {
192+
  flex: 1;
193+
}
194+
195+
#features ul {
196+
  list-style: none;
197+
  padding: 0;
198+
}
199+
200+
#features li {
201+
  padding: 10px;
202+
  font-size: 1.1em;
203+
}
204+
205+
#content p {
206+
  margin-bottom: 3em;
207+
}
208+
209+
.article {
210+
  width: 900px;
211+
  margin: auto;
212+
}
213+
214+
.article p {
215+
  text-align: justify;
216+
  line-height: 1.5em;
217+
}
218+
219+
.article h2 {
220+
  text-align: left;
221+
}

haunt.scm unknown status 1

1+
;;; Nani Project website
2+
;;; Copyright ?? 2019 Julien Lepiller <julien@lepiller.eu>
3+
;;;
4+
;;; This file is part of the Nani Project website.
5+
;;;
6+
;;; The Nani Project website is free software; you can redistribute it and/or modify it
7+
;;; under the terms of the GNU Affero General Public License as published by
8+
;;; the Free Software Foundation; either version 3 of the License, or (at
9+
;;; your option) any later version.
10+
;;;
11+
;;; The Nani Project website is distributed in the hope that it will be useful, but
12+
;;; WITHOUT ANY WARRANTY; without even the implied warranty of
13+
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14+
;;; GNU Affero General Public License for more details.
15+
;;;
16+
;;; You should have received a copy of the GNU Affero General Public License
17+
;;; along with the Nani Project website.  If not, see <http://www.gnu.org/licenses/>.
18+
19+
(use-modules (haunt asset)
20+
	     (haunt reader)
21+
	     (haunt site)
22+
	     (haunt builder assets)
23+
	     (haunt builder atom))
24+
25+
(use-modules (pages index)
26+
	     (pages data)
27+
	     (pages documentation)
28+
	     (pages e404)
29+
	     (pages feeds)
30+
	     (pages mentions)
31+
	     (pages blog))
32+
33+
(site #:title "Nani Project"
34+
      #:domain "xana.lepiller.eu"
35+
      #:default-metadata
36+
      '((author . "Julien Lepiller")
37+
        (email  . "webmaster@lepiller.eu"))
38+
      #:readers (list sxml-reader)
39+
      #:builders (append
40+
                   (list (atom-feed #:filter get-posts)
41+
                         (atom-feeds-by-tag #:filter get-posts)
42+
                         (static-directory "css")
43+
                         (static-directory "dicos")
44+
                         (static-directory "images"))
45+
                  blog-pages
46+
                  page404
47+
                  page-data
48+
                  page-documentation
49+
                  page-feeds
50+
                  page-mentions
51+
                  page-index))

images/get-it-on-en.png unknown status 1

Binary data

images/get-it-on-fr.png unknown status 1

Binary data

images/hamburger.png unknown status 1

Binary data

images/screen.png unknown status 1

Binary data

pages/blog.scm unknown status 1

1+
;;; Nani Project website
2+
;;; Copyright ?? 2019 Julien Lepiller <julien@lepiller.eu>
3+
;;;
4+
;;; This file is part of the Nani Project website.
5+
;;;
6+
;;; The Nani Project website is free software; you can redistribute it and/or modify it
7+
;;; under the terms of the GNU Affero General Public License as published by
8+
;;; the Free Software Foundation; either version 3 of the License, or (at
9+
;;; your option) any later version.
10+
;;;
11+
;;; The Nani Project website is distributed in the hope that it will be useful, but
12+
;;; WITHOUT ANY WARRANTY; without even the implied warranty of
13+
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14+
;;; GNU Affero General Public License for more details.
15+
;;;
16+
;;; You should have received a copy of the GNU Affero General Public License
17+
;;; along with the Nani Project website.  If not, see <http://www.gnu.org/licenses/>.
18+
19+
(define-module (pages blog)
20+
  #:use-module (tools i18n)
21+
  #:use-module (tools theme)
22+
  #:use-module (haunt builder blog)
23+
  #:use-module (haunt post)
24+
  #:export (blog-pages get-posts))
25+
26+
(define (get-posts posts)
27+
  "Returns POSTS sorted in reverse chronological order, excluding drafts."
28+
  (filter (lambda (post)
29+
            (not (member "draft" (post-ref post 'tags))))
30+
    (posts/reverse-chronological posts)))
31+
32+
(define (get-lang-posts lang)
33+
  (lambda (posts)
34+
    "Returns POSTS sorted in reverse chronological order, excluding drafts."
35+
    (filter (lambda (post)
36+
              (and (not (member "draft" (post-ref post 'tags)))
37+
                   (member lang (post-ref post 'tags))))
38+
      (posts/reverse-chronological posts))))
39+
40+
(define (get-every-posts posts)
41+
  (filter (lambda (post)
42+
            (not (member "draft" (post-ref post 'tags))))
43+
    (posts/reverse-chronological posts)))
44+
45+
(define get-posts-en (get-lang-posts "en"))
46+
47+
(define nani-articles-en
48+
`(("Articles" "blog.en.html" ,get-posts-en)))
49+
50+
51+
(define %articles
52+
`(("Articles" "blog.html" ,get-posts)))
53+
54+
(define %complete-articles
55+
`(("Articles" "blog-complete.html" ,get-posts)))
56+
(define %complete-articles-en
57+
`(("Articles" "blog-complete.en.html" ,get-posts))) 
58+
59+
(define blog-pages
60+
  (list 
61+
    (blog #:theme (nani-theme "en" "blog") #:collections nani-articles-en)
62+
    (blog #:theme (nani-theme "en" "blog-complete") #:collections %complete-articles-en)))

pages/data.scm unknown status 1

1+
;;; Nani Project website
2+
;;; Copyright ?? 2019 Julien Lepiller <julien@lepiller.eu>
3+
;;;
4+
;;; This file is part of the Nani Project website.
5+
;;;
6+
;;; The Nani Project website is free software; you can redistribute it and/or modify it
7+
;;; under the terms of the GNU Affero General Public License as published by
8+
;;; the Free Software Foundation; either version 3 of the License, or (at
9+
;;; your option) any later version.
10+
;;;
11+
;;; The Nani Project website is distributed in the hope that it will be useful, but
12+
;;; WITHOUT ANY WARRANTY; without even the implied warranty of
13+
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14+
;;; GNU Affero General Public License for more details.
15+
;;;
16+
;;; You should have received a copy of the GNU Affero General Public License
17+
;;; along with the Nani Project website.  If not, see <http://www.gnu.org/licenses/>.
18+
19+
(define-module (pages data)
20+
  #:use-module (tools i18n)
21+
  #:use-module (tools theme)
22+
  #:export (page-data))
23+
24+
(define page-data
25+
  (internationalize "data" "data"
26+
    `(div
27+
      (h1 (_ "Data Sources"))
28+
      (div (@ (class "article"))
29+
        (p (_ "Nani uses various open data sources to provide its functionalities.
30+
This page lists data sources, content and processes."))
31+
        (h2 (_ "Electronic Dictionary Research and Development Group"))
32+
        (p (_ "The Electronic Dictionary Research and Development Group was
33+
established in 2000 within the Faculty of Information Technology, Monash
34+
University. Its goals are providing electronic dictionaries and
35+
computational linguistics."))
36+
        (h3 (_ "JMdict"))
37+
        (p (_ "The <a href=\"~a\">JMdict</a> project has as its goal the
38+
production of a freely available Japanese/English Dictionary in
39+
machine-readable form."
40+
               "https://www.edrdg.org/jmdict/edict_doc.html"))
41+
        (p (_ "This source is licensed under <a href=\"~a\">Creative Commons
42+
Share-Alike</a>. This data is available in monolingual (English) and multilingual,
43+
including Dutch, French, German and others."
44+
               "https://creativecommons.org/licenses/by-sa/3.0/"))
45+
        (p (_ "The original files are XML files with lots of entries. Since it's
46+
hard to search inside such big XML files, we modify them into a binary format
47+
that contains a search tree which makes it so much efficient to look for data."))))
48+
    nani-theme))

pages/documentation.scm unknown status 1

1+
;;; Nani Project website
2+
;;; Copyright ?? 2019 Julien Lepiller <julien@lepiller.eu>
3+
;;;
4+
;;; This file is part of the Nani Project website.
5+
;;;
6+
;;; The Nani Project website is free software; you can redistribute it and/or modify it
7+
;;; under the terms of the GNU Affero General Public License as published by
8+
;;; the Free Software Foundation; either version 3 of the License, or (at
9+
;;; your option) any later version.
10+
;;;
11+
;;; The Nani Project website is distributed in the hope that it will be useful, but
12+
;;; WITHOUT ANY WARRANTY; without even the implied warranty of
13+
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14+
;;; GNU Affero General Public License for more details.
15+
;;;
16+
;;; You should have received a copy of the GNU Affero General Public License
17+
;;; along with the Nani Project website.  If not, see <http://www.gnu.org/licenses/>.
18+
19+
(define-module (pages documentation)
20+
  #:use-module (tools i18n)
21+
  #:use-module (tools theme)
22+
  #:export (page-documentation))
23+
24+
(define page-documentation
25+
  (internationalize "documentation" "documentation"
26+
    `(div
27+
      (h1 (_ "Documentation"))
28+
      (div (@ (class "article"))
29+
        (p (_ "This documentation will guide you in some of the most important
30+
aspects of the application. Please read it carefuly!"))
31+
        (h2 (_ "Downloading a dictionary"))
32+
        (p (_ "This application is based on multiple dictionaries that
33+
you can download in the app. They all add some functionality to the application.
34+
In the following sections we will see how to use them."))
35+
        (p (_ "To download a dictionary, you need to click on the three dots
36+
at the top right of the screens and select ???Manage Dictionaries???. This will
37+
open a new view where you can select a dictionary in a list."))
38+
        (p (_ "Tap on the dictionary you want to add. You will be presented
39+
with more details on the dictionary and options to download, refresh or delete
40+
it. Once you have successfuly downloaded a dictionary, you are ready to use
41+
the app!"))
42+
        (h2 (_ "Searching vocabulary"))
43+
        (p (_ "To be able to look for vocabulary, you must first download a
44+
dictionary. There are dictionaries for different languages."))
45+
        (p (_ "From the main view, tap on the search bar and type your search
46+
term. It can be a word written in kanji, with its pronounciation or the meaning
47+
of a word in the language of a dictionary you downloaded."))
48+
        (p (_ "Tap on the search button and you'll see the results. Easy, right?"))
49+
        (h2 (_ "Settings"))
50+
        (p (_ "There are currently no settings."))
51+
        (h2 (_ "Building the app"))
52+
        (p (_ "To develop the app, I use android studio. This is the best way to
53+
build it, because you can easily modify some of it too. If you don't want to
54+
use android studio, you can still build the app with only gradle."))
55+
        (h2 (_ "You can help too!"))
56+
        (p (_ "Lastly, note that you can help make this app the best. You can help
57+
in so many different ways, some of the greatest are listed below:"))
58+
        (ul
59+
          (li (_ "<a href=\"~a\">Translate</a> the app and this website"
60+
                  "https://framagit.org/nani-project"))
61+
          (li (_ "Talk about it to fellow Japanese learners"))
62+
          (li (_ "<a href=\"~a\">Report</a> a bug, or two"
63+
                  "https://framagit.org/nani-project/nani-app/issues"))
64+
          (li (_ "<a href=\"~a\">Suggest</a> improvements and more data sources"
65+
                  "https://framagit.org/nani-project/nani-app/issues"))
66+
          (li (_ "Write some code and send me a patch")))
67+
        (p (_ "In any case, I hope you will enjoy Nani as much as I enjoyed writting
68+
it!"))))
69+
    nani-theme))

pages/e404.scm unknown status 1

1+
;;; Nani Project website
2+
;;; Copyright ?? 2019 Julien Lepiller <julien@lepiller.eu>
3+
;;;
4+
;;; This file is part of the Nani Project website.
5+
;;;
6+
;;; The Nani Project website is free software; you can redistribute it and/or modify it
7+
;;; under the terms of the GNU Affero General Public License as published by
8+
;;; the Free Software Foundation; either version 3 of the License, or (at
9+
;;; your option) any later version.
10+
;;;
11+
;;; The Nani Project website is distributed in the hope that it will be useful, but
12+
;;; WITHOUT ANY WARRANTY; without even the implied warranty of
13+
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14+
;;; GNU Affero General Public License for more details.
15+
;;;
16+
;;; You should have received a copy of the GNU Affero General Public License
17+
;;; along with the Nani Project website.  If not, see <http://www.gnu.org/licenses/>.
18+
19+
(define-module (pages e404)
20+
  #:use-module (tools i18n)
21+
  #:use-module (tools theme)
22+
  #:export (page404))
23+
24+
(define page404
25+
  (internationalize "404" "404"
26+
    `(center (h1 (_ "That's a 404 :/")) (img (@ (src "/images/404.svg"))))
27+
    nani-theme))

pages/feeds.scm unknown status 1

1+
;;; Nani Project website
2+
;;; Copyright ?? 2019 Julien Lepiller <julien@lepiller.eu>
3+
;;;
4+
;;; This file is part of the Nani Project website.
5+
;;;
6+
;;; The Nani Project website is free software; you can redistribute it and/or modify it
7+
;;; under the terms of the GNU Affero General Public License as published by
8+
;;; the Free Software Foundation; either version 3 of the License, or (at
9+
;;; your option) any later version.
10+
;;;
11+
;;; The Nani Project website is distributed in the hope that it will be useful, but
12+
;;; WITHOUT ANY WARRANTY; without even the implied warranty of
13+
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14+
;;; GNU Affero General Public License for more details.
15+
;;;
16+
;;; You should have received a copy of the GNU Affero General Public License
17+
;;; along with the Nani Project website.  If not, see <http://www.gnu.org/licenses/>.
18+
19+
(define-module (pages feeds)
20+
  #:use-module (tools i18n)
21+
  #:use-module (tools theme)
22+
  #:export (page-feeds))
23+
24+
(define page-feeds
25+
  (internationalize "index" "index"
26+
    `()
27+
    nani-theme))

pages/index.scm unknown status 1

1+
;;; Nani Project website
2+
;;; Copyright ?? 2019 Julien Lepiller <julien@lepiller.eu>
3+
;;;
4+
;;; This file is part of the Nani Project website.
5+
;;;
6+
;;; The Nani Project website is free software; you can redistribute it and/or modify it
7+
;;; under the terms of the GNU Affero General Public License as published by
8+
;;; the Free Software Foundation; either version 3 of the License, or (at
9+
;;; your option) any later version.
10+
;;;
11+
;;; The Nani Project website is distributed in the hope that it will be useful, but
12+
;;; WITHOUT ANY WARRANTY; without even the implied warranty of
13+
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14+
;;; GNU Affero General Public License for more details.
15+
;;;
16+
;;; You should have received a copy of the GNU Affero General Public License
17+
;;; along with the Nani Project website.  If not, see <http://www.gnu.org/licenses/>.
18+
19+
(define-module (pages index)
20+
  #:use-module (tools i18n)
21+
  #:use-module (tools theme)
22+
  #:export (page-index))
23+
24+
(define page-index
25+
  (internationalize "index" "index"
26+
    `(div
27+
       (div (@ (id "hero"))
28+
         (h1 (_ "OFFLINE JAPANESE DICTIONARY"))
29+
         (nav
30+
           (a (@ (href "https://f-droid.org/app/eu.lepiller.nani"))
31+
              ;; Get more badge urls at
32+
              ;; https://gitlab.com/fdroid/artwork/tree/master/badge
33+
              ;; TRANSLATORS: rename this file to /images/get-it-on-<lang>.png
34+
              (_ "<img src=\"/images/get-it-on-en.png\" />"))))
35+
       (h2 (@ (id "after-hero")) (_ "Features"))
36+
       (p (_ "Offline Japanese dictionary, with meaning, pronounciation, kanji and more!"))
37+
       (div (@ (id "features"))
38+
        (div
39+
          (h3 (_ "Specialized dictionary"))
40+
          (ul
41+
            (li (_ "Search by kanji, reading and meaning"))
42+
            (li (_ "Multiple propositions"))
43+
            (li (_ "Works offline with the features you want"))
44+
            (li (_ "Multiple languages supported: English, French, German, and more"))))
45+
        (div
46+
          (h3 (_ "Free Software and Open Data"))
47+
          (ul
48+
            (li (_ "Free software application"))
49+
            (li (_ "No tracker, no ad, no suspicious permission"))
50+
            (li (_ "Many open <a href=\"/data.html\">data providers</a>"))
51+
            (li (_ "You can build it, contribute to it and its data sources"))))))
52+
    nani-theme))

pages/mentions.scm unknown status 1

1+
;;; Nani Project website
2+
;;; Copyright ?? 2019 Julien Lepiller <julien@lepiller.eu>
3+
;;;
4+
;;; This file is part of the Nani Project website.
5+
;;;
6+
;;; The Nani Project website is free software; you can redistribute it and/or modify it
7+
;;; under the terms of the GNU Affero General Public License as published by
8+
;;; the Free Software Foundation; either version 3 of the License, or (at
9+
;;; your option) any later version.
10+
;;;
11+
;;; The Nani Project website is distributed in the hope that it will be useful, but
12+
;;; WITHOUT ANY WARRANTY; without even the implied warranty of
13+
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14+
;;; GNU Affero General Public License for more details.
15+
;;;
16+
;;; You should have received a copy of the GNU Affero General Public License
17+
;;; along with the Nani Project website.  If not, see <http://www.gnu.org/licenses/>.
18+
19+
(define-module (pages mentions)
20+
  #:use-module (tools i18n)
21+
  #:use-module (tools theme)
22+
  #:export (page-mentions))
23+
24+
(define page-mentions
25+
  (internationalize "Mentions l??gales" "mentions"
26+
    `(article (@ (class "article"))
27+
       (h1 (_ "Legal notices"))
28+
       (p (_ "This website is edited by Julien Lepiller and hosted by <a href=\"~a\" target=\"_blank\">One provider</a>."
29+
             "https://oneprovider.com"))
30+
       (p (_ "Head office: ") "3275 Av Francis-Hughes, Laval, QC H7L 5A5 Canada")
31+
       (p (_ "Phone: ") "+1.514.286.0253")
32+
       (p (_ "This website and the application do not collect or store personal information
33+
other than what is technically necessary to deliver web pages and content to the user.")))
34+
    nani-theme))

po/fr.po unknown status 1

1+
# French translations for PACKAGE package.
2+
# Copyright (C) 2019 THE PACKAGE'S COPYRIGHT HOLDER
3+
# This file is distributed under the same license as the PACKAGE package.
4+
# root <julien@lepiller.eu>, 2019.
5+
#
6+
msgid ""
7+
msgstr ""
8+
"Project-Id-Version: PACKAGE VERSION\n"
9+
"Report-Msgid-Bugs-To: \n"
10+
"POT-Creation-Date: 2019-05-15 10:27+0200\n"
11+
"PO-Revision-Date: 2019-04-16 18:08+0200\n"
12+
"Last-Translator: root <julien@lepiller.eu>\n"
13+
"Language-Team: French\n"
14+
"Language: fr\n"
15+
"MIME-Version: 1.0\n"
16+
"Content-Type: text/plain; charset=UTF-8\n"
17+
"Content-Transfer-Encoding: 8bit\n"
18+
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
19+
20+
#: pages/documentation.scm:62
21+
#, scheme-format
22+
msgid "<a href=\"~a\">Report</a> a bug, or two"
23+
msgstr "<a href=\"~a\">Rapportez</a> un bogue, voir deux,"
24+
25+
#: pages/documentation.scm:64
26+
#, scheme-format
27+
msgid "<a href=\"~a\">Suggest</a> improvements and more data sources"
28+
msgstr ""
29+
"<a href=\"~a\">Sugg??rez</a> des am??liorations et des sources de donn??es "
30+
"suppl??mentaires,"
31+
32+
#: pages/documentation.scm:59
33+
#, scheme-format
34+
msgid "<a href=\"~a\">Translate</a> the app and this website"
35+
msgstr "<a href=\"~a\">Traduisez</a> l'appli et ce site web"
36+
37+
#. Get more badge urls at
38+
#. https://gitlab.com/fdroid/artwork/tree/master/badge
39+
#. TRANSLATORS: rename this file to /images/get-it-on-<lang>.png
40+
#: pages/index.scm:34
41+
msgid "<img src=\"/images/get-it-on-en.png\" />"
42+
msgstr "<img src=\"/images/get-it-on-fr.png\" />"
43+
44+
#: tools/theme.scm:50
45+
msgid "Build it"
46+
msgstr "Construisez-la"
47+
48+
#: pages/documentation.scm:51
49+
msgid "Building the app"
50+
msgstr "Construire l'application"
51+
52+
#: pages/data.scm:27
53+
msgid "Data Sources"
54+
msgstr "Sources de donn??es"
55+
56+
#: pages/documentation.scm:27 tools/theme.scm:48
57+
msgid "Documentation"
58+
msgstr "Documentation"
59+
60+
#: pages/documentation.scm:31
61+
msgid "Downloading a dictionary"
62+
msgstr "T??l??charger un dictionnaire"
63+
64+
#: pages/data.scm:31
65+
msgid "Electronic Dictionary Research and Development Group"
66+
msgstr "Electronic Dictionary Research and Development Group"
67+
68+
#: pages/index.scm:35 tools/theme.scm:47
69+
msgid "Features"
70+
msgstr "Fonctionalit??s"
71+
72+
#: pages/index.scm:46
73+
msgid "Free Software and Open Data"
74+
msgstr "Logiciel libre et open data"
75+
76+
#: pages/index.scm:48
77+
msgid "Free software application"
78+
msgstr "Cette application est un logiciel libre"
79+
80+
#: pages/documentation.scm:45
81+
msgid ""
82+
"From the main view, tap on the search bar and type your search\n"
83+
"term. It can be a word written in kanji, with its pronounciation or the "
84+
"meaning\n"
85+
"of a word in the language of a dictionary you downloaded."
86+
msgstr ""
87+
"Depuis la vue principale, appuyez sur la barre de recherche et saisissez "
88+
"votre recherche. Elle peut contenir un mot ??crit en kanji, sa prononciation "
89+
"en hiragana ou son sens dans l'une des langues pour lesquelles vous avez "
90+
"t??l??charg?? un dictionnaire."
91+
92+
#: pages/mentions.scm:30
93+
msgid "Head office: "
94+
msgstr "Si??ge social : "
95+
96+
#: pages/documentation.scm:67
97+
msgid ""
98+
"In any case, I hope you will enjoy Nani as much as I enjoyed writting\n"
99+
"it!"
100+
msgstr ""
101+
"Dans tous les cas, j'esp??re que vous appr??cierez Nani autant que j'ai "
102+
"appr??ci?? l'??crire !"
103+
104+
#: pages/data.scm:36
105+
msgid "JMdict"
106+
msgstr "JMdict"
107+
108+
#: pages/documentation.scm:56
109+
msgid ""
110+
"Lastly, note that you can help make this app the best. You can help\n"
111+
"in so many different ways, some of the greatest are listed below:"
112+
msgstr ""
113+
"Enfin, remarquez que vous pouvez aider ?? faire de cette appli une "
114+
"r??f??rence ! Vous pouvez aider de nombreuses mani??res, dont voici quelques-"
115+
"unes :"
116+
117+
#: pages/mentions.scm:27 tools/theme.scm:56
118+
msgid "Legal notices"
119+
msgstr "Mentions l??gales"
120+
121+
#: pages/index.scm:50
122+
msgid "Many open <a href=\"/data.html\">data providers</a>"
123+
msgstr "De nombreux <a href=\"/data.html\">fournisseurs open data</a>,"
124+
125+
#: pages/index.scm:44
126+
msgid "Multiple languages supported: English, French, German, and more"
127+
msgstr ""
128+
"Plusieurs langues support??es : l'anglais, le fran??ais, l'allemand et bien "
129+
"d'autres,"
130+
131+
#: pages/index.scm:42
132+
msgid "Multiple propositions"
133+
msgstr "Plusieurs propositions"
134+
135+
#: pages/data.scm:29
136+
msgid ""
137+
"Nani uses various open data sources to provide its functionalities.\n"
138+
"This page lists data sources, content and processes."
139+
msgstr ""
140+
"Nani utilise diverses sources de donn??es en open data pour fournir toutes "
141+
"ses fonctionalit??s. Cette page liste les sources de donn??es, leur contenu et "
142+
"la mani??re dont elles sont trait??es."
143+
144+
#: pages/index.scm:49
145+
msgid "No tracker, no ad, no suspicious permission"
146+
msgstr "Pas de tracker, de pub ni de permission suspecte,"
147+
148+
#: pages/index.scm:28
149+
msgid "OFFLINE JAPANESE DICTIONARY"
150+
msgstr "DICTIONNAIRE JAPONAIS HORS-LIGNE"
151+
152+
#: pages/index.scm:36
153+
msgid ""
154+
"Offline Japanese dictionary, with meaning, pronounciation, kanji and more!"
155+
msgstr ""
156+
"Dictionnaire japonais hors-ligne, avec la signification, la prononciation, "
157+
"les kanji et bien plus encore !"
158+
159+
#: pages/mentions.scm:31
160+
msgid "Phone: "
161+
msgstr "T??l??phone : "
162+
163+
#: tools/theme.scm:88
164+
msgid "Read"
165+
msgstr "Lire"
166+
167+
#: pages/index.scm:41
168+
msgid "Search by kanji, reading and meaning"
169+
msgstr "Recherchez par kanji, lecture ou signification"
170+
171+
#: pages/documentation.scm:42
172+
msgid "Searching vocabulary"
173+
msgstr "Rechercher du vocabulaire"
174+
175+
#: pages/documentation.scm:49
176+
msgid "Settings"
177+
msgstr "Param??tres"
178+
179+
#: pages/index.scm:39
180+
msgid "Specialized dictionary"
181+
msgstr "Dictionnaire sp??cialis??"
182+
183+
#: pages/documentation.scm:61
184+
msgid "Talk about it to fellow Japanese learners"
185+
msgstr "Parlez-en autour de vous"
186+
187+
#: pages/documentation.scm:38
188+
msgid ""
189+
"Tap on the dictionary you want to add. You will be presented\n"
190+
"with more details on the dictionary and options to download, refresh or "
191+
"delete\n"
192+
"it. Once you have successfuly downloaded a dictionary, you are ready to use\n"
193+
"the app!"
194+
msgstr ""
195+
"Appuyez sur le dictionnaire que vous voulez ajouter. Vous arriverez sur une "
196+
"page avec plus de d??tails sur le dictionnaire et des options pour "
197+
"t??l??charger, mettre ?? jour et supprimer le dictionnaire. Une fois que vous "
198+
"avez r??ussi ?? t??l??charger un dictionnaire, vous ??tes pr??t ?? utiliser "
199+
"l'appli !"
200+
201+
#: pages/documentation.scm:48
202+
msgid "Tap on the search button and you'll see the results. Easy, right?"
203+
msgstr ""
204+
"Appuyez sur le bouton de recherche et vous verrez les r??sultats. Plut??t "
205+
"simple, non ?"
206+
207+
#: pages/e404.scm:26
208+
msgid "That's a 404 :/"
209+
msgstr "C'est une erreur 404 :/"
210+
211+
#: pages/data.scm:37
212+
#, scheme-format
213+
msgid ""
214+
"The <a href=\"~a\">JMdict</a> project has as its goal the\n"
215+
"production of a freely available Japanese/English Dictionary in\n"
216+
"machine-readable form."
217+
msgstr ""
218+
"Le projet <a href=\"~a\">JMdict</a> a pour but de produire un dictionnaire "
219+
"japonais/anglais librement disponible dans un format lisible par une machine."
220+
221+
#: pages/data.scm:32
222+
msgid ""
223+
"The Electronic Dictionary Research and Development Group was\n"
224+
"established in 2000 within the Faculty of Information Technology, Monash\n"
225+
"University. Its goals are providing electronic dictionaries and\n"
226+
"computational linguistics."
227+
msgstr ""
228+
"Le <em lang=\"en\">Electronic Dictionary Research and Development Group</em> "
229+
"a d??marr?? en 2000 dans la facult?? des technologies de l'information de "
230+
"l'universit?? de Monash. Son but est de fournir des dictionnaires "
231+
"??lectroniques et la linguistique informatique."
232+
233+
#: pages/data.scm:45
234+
msgid ""
235+
"The original files are XML files with lots of entries. Since it's\n"
236+
"hard to search inside such big XML files, we modify them into a binary "
237+
"format\n"
238+
"that contains a search tree which makes it so much efficient to look for "
239+
"data."
240+
msgstr ""
241+
"Les fichiers de d??part sont des fichiers XML avec beaucoup d'entr??es. Comme "
242+
"il est difficile de rechercher dans des XML aussi gros, nous les modifions "
243+
"en un format binaire qui contient des arbres de recherche qui rendent plus "
244+
"efficaces la recherche de donn??es."
245+
246+
#: tools/theme.scm:57
247+
#, scheme-format
248+
msgid ""
249+
"The source of this website can be seen at\n"
250+
"<a href=\"~a\">framagit</a>. This website is free software; you can "
251+
"redistribute\n"
252+
"it and/or modify it under the terms of the GNU Affero General Public "
253+
"License\n"
254+
"as published by the Free Software Foundation; either version 3 of the "
255+
"License,\n"
256+
"or (at your option) any later version."
257+
msgstr ""
258+
"Vous pouvez voir la source de ce site sur <a href=\"~a\">framagit</a>. Ce "
259+
"site est un logiciel libre ; vous pouvez le redistribuer ou le modifier sous "
260+
"les termes de la license GNU Affero General Public License telle que publi??e "
261+
"par la Free Software Foundation ; soit en version 3, soit (?? votre gr??) en "
262+
"une version ult??rieure."
263+
264+
#: pages/documentation.scm:50
265+
msgid "There are currently no settings."
266+
msgstr "Il n'y a pas encore de param??tre."
267+
268+
#: pages/documentation.scm:32
269+
msgid ""
270+
"This application is based on multiple dictionaries that\n"
271+
"you can download in the app. They all add some functionality to the "
272+
"application.\n"
273+
"In the following sections we will see how to use them."
274+
msgstr ""
275+
"Cette application est bas??e sur divers dictionnaires que vous pouvez "
276+
"t??l??charger dans l'appli. Ils ajoutent tous certaines fonctionnalit??s ?? "
277+
"l'application. Dans les sections suivantes, nous verrons comment les "
278+
"utiliser."
279+
280+
#: pages/documentation.scm:29
281+
msgid ""
282+
"This documentation will guide you in some of the most important\n"
283+
"aspects of the application. Please read it carefuly!"
284+
msgstr ""
285+
"Cette documentation vous guidera sur certains aspets les plus importants de "
286+
"l'application. Lisez-la attentivement !"
287+
288+
#: pages/data.scm:41
289+
#, scheme-format
290+
msgid ""
291+
"This source is licensed under <a href=\"~a\">Creative Commons\n"
292+
"Share-Alike</a>. This data is available in monolingual (English) and "
293+
"multilingual,\n"
294+
"including Dutch, French, German and others."
295+
msgstr ""
296+
"Cette source est disponible sous license <a href=\"~a\">Creative Commons "
297+
"Share-Alike</a>. Ces donn??es sont disponibles sous forme monolingue "
298+
"(anglais) et multilingue, dont le n??erlandais, le fran??ais, l'allemand et "
299+
"d'autres langues."
300+
301+
#: pages/mentions.scm:32
302+
msgid ""
303+
"This website and the application do not collect or store personal "
304+
"information\n"
305+
"other than what is technically necessary to deliver web pages and content to "
306+
"the user."
307+
msgstr ""
308+
"Ce sit eweb et l'application ne collectent ni ne stoquent de donn??es "
309+
"personnelles autres que celles techniquement n??cessaires pour d??livrer les "
310+
"pages web et le contenu ?? l'utilisateur."
311+
312+
#: pages/mentions.scm:28
313+
#, scheme-format
314+
msgid ""
315+
"This website is edited by Julien Lepiller and hosted by <a href=\"~a\" "
316+
"target=\"_blank\">One provider</a>."
317+
msgstr ""
318+
"Ce site web est ??dit?? par Julien Lepiller et h??berg?? par <a href=\"~a\" "
319+
"target=\"_blank\">One provider</a>."
320+
321+
#: pages/documentation.scm:43
322+
msgid ""
323+
"To be able to look for vocabulary, you must first download a\n"
324+
"dictionary. There are dictionaries for different languages."
325+
msgstr ""
326+
"Pour rechercher du vocabulaire, vous devez d'abord t??l??charger un "
327+
"dictionnaire. Il y a des dictionnaires pour diff??rentes langues."
328+
329+
#: pages/documentation.scm:52
330+
msgid ""
331+
"To develop the app, I use android studio. This is the best way to\n"
332+
"build it, because you can easily modify some of it too. If you don't want "
333+
"to\n"
334+
"use android studio, you can still build the app with only gradle."
335+
msgstr ""
336+
"Pour d??velopper l'appli, j'utilise android studio. C'est la meilleure fa??on "
337+
"de la construire, parce que vous pouvez facilement la modifier. Si vous ne "
338+
"voulez pas utiliser android studio, vous pouvez toujours construire "
339+
"l'application avec seulement gradle."
340+
341+
#: pages/documentation.scm:35
342+
msgid ""
343+
"To download a dictionary, you need to click on the three dots\n"
344+
"at the top right of the screens and select ???Manage Dictionaries???. This will\n"
345+
"open a new view where you can select a dictionary in a list."
346+
msgstr ""
347+
"Pour t??l??charger un dictionnaire, vous devez appuyer sur les trois points en "
348+
"haut ?? droite de l'??cran et choisir ?? g??rer les dictionnaires ??. Cela vous "
349+
"am??nera ?? une nouvelle vue o?? vous pourrez choisir un dictionnaire dans une "
350+
"liste."
351+
352+
#: tools/theme.scm:75
353+
msgid "View posts for every language"
354+
msgstr "Voir les billets dans toutes les langues"
355+
356+
#: pages/index.scm:43
357+
msgid "Works offline with the features you want"
358+
msgstr "Fonctionne hors lignes avec les fonctionnalit??s que vous choisissez"
359+
360+
#: pages/documentation.scm:66
361+
msgid "Write some code and send me a patch"
362+
msgstr "??crivez du code et envoyez-moi des correctifs"
363+
364+
#: pages/index.scm:51
365+
msgid "You can build it, contribute to it and its data sources"
366+
msgstr ""
367+
"Vous pouvez la construire, contribuer ?? son d??veloppement et ?? ses sources "
368+
"de donn??es"
369+
370+
#: pages/documentation.scm:55
371+
msgid "You can help too!"
372+
msgstr "Vous aussi, vous pouvez aider !"
373+
374+
#: tools/theme.scm:67
375+
#, scheme-format
376+
msgid "by ~a ??? ~a"
377+
msgstr "par ~a ??? ~a"

po/nani.pot unknown status 1

1+
# SOME DESCRIPTIVE TITLE.
2+
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
3+
# This file is distributed under the same license as the PACKAGE package.
4+
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
5+
#
6+
#, fuzzy
7+
msgid ""
8+
msgstr ""
9+
"Project-Id-Version: PACKAGE VERSION\n"
10+
"Report-Msgid-Bugs-To: \n"
11+
"POT-Creation-Date: 2019-05-15 10:30+0200\n"
12+
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
13+
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
14+
"Language-Team: LANGUAGE <LL@li.org>\n"
15+
"Language: \n"
16+
"MIME-Version: 1.0\n"
17+
"Content-Type: text/plain; charset=UTF-8\n"
18+
"Content-Transfer-Encoding: 8bit\n"
19+
20+
#: pages/documentation.scm:62
21+
#, scheme-format
22+
msgid "<a href=\"~a\">Report</a> a bug, or two"
23+
msgstr ""
24+
25+
#: pages/documentation.scm:64
26+
#, scheme-format
27+
msgid "<a href=\"~a\">Suggest</a> improvements and more data sources"
28+
msgstr ""
29+
30+
#: pages/documentation.scm:59
31+
#, scheme-format
32+
msgid "<a href=\"~a\">Translate</a> the app and this website"
33+
msgstr ""
34+
35+
#. Get more badge urls at
36+
#. https://gitlab.com/fdroid/artwork/tree/master/badge
37+
#. TRANSLATORS: rename this file to /images/get-it-on-<lang>.png
38+
#: pages/index.scm:34
39+
msgid "<img src=\"/images/get-it-on-en.png\" />"
40+
msgstr ""
41+
42+
#: tools/theme.scm:50
43+
msgid "Build it"
44+
msgstr ""
45+
46+
#: pages/documentation.scm:51
47+
msgid "Building the app"
48+
msgstr ""
49+
50+
#: pages/data.scm:27
51+
msgid "Data Sources"
52+
msgstr ""
53+
54+
#: pages/documentation.scm:27 tools/theme.scm:48
55+
msgid "Documentation"
56+
msgstr ""
57+
58+
#: pages/documentation.scm:31
59+
msgid "Downloading a dictionary"
60+
msgstr ""
61+
62+
#: pages/data.scm:31
63+
msgid "Electronic Dictionary Research and Development Group"
64+
msgstr ""
65+
66+
#: pages/index.scm:35 tools/theme.scm:47
67+
msgid "Features"
68+
msgstr ""
69+
70+
#: pages/index.scm:46
71+
msgid "Free Software and Open Data"
72+
msgstr ""
73+
74+
#: pages/index.scm:48
75+
msgid "Free software application"
76+
msgstr ""
77+
78+
#: pages/documentation.scm:45
79+
msgid ""
80+
"From the main view, tap on the search bar and type your search\n"
81+
"term. It can be a word written in kanji, with its pronounciation or the "
82+
"meaning\n"
83+
"of a word in the language of a dictionary you downloaded."
84+
msgstr ""
85+
86+
#: pages/mentions.scm:30
87+
msgid "Head office: "
88+
msgstr ""
89+
90+
#: pages/documentation.scm:67
91+
msgid ""
92+
"In any case, I hope you will enjoy Nani as much as I enjoyed writting\n"
93+
"it!"
94+
msgstr ""
95+
96+
#: pages/data.scm:36
97+
msgid "JMdict"
98+
msgstr ""
99+
100+
#: pages/documentation.scm:56
101+
msgid ""
102+
"Lastly, note that you can help make this app the best. You can help\n"
103+
"in so many different ways, some of the greatest are listed below:"
104+
msgstr ""
105+
106+
#: pages/mentions.scm:27 tools/theme.scm:56
107+
msgid "Legal notices"
108+
msgstr ""
109+
110+
#: pages/index.scm:50
111+
msgid "Many open <a href=\"/data.html\">data providers</a>"
112+
msgstr ""
113+
114+
#: pages/index.scm:44
115+
msgid "Multiple languages supported: English, French, German, and more"
116+
msgstr ""
117+
118+
#: pages/index.scm:42
119+
msgid "Multiple propositions"
120+
msgstr ""
121+
122+
#: pages/data.scm:29
123+
msgid ""
124+
"Nani uses various open data sources to provide its functionalities.\n"
125+
"This page lists data sources, content and processes."
126+
msgstr ""
127+
128+
#: pages/index.scm:49
129+
msgid "No tracker, no ad, no suspicious permission"
130+
msgstr ""
131+
132+
#: pages/index.scm:28
133+
msgid "OFFLINE JAPANESE DICTIONARY"
134+
msgstr ""
135+
136+
#: pages/index.scm:36
137+
msgid ""
138+
"Offline Japanese dictionary, with meaning, pronounciation, kanji and more!"
139+
msgstr ""
140+
141+
#: pages/mentions.scm:31
142+
msgid "Phone: "
143+
msgstr ""
144+
145+
#: tools/theme.scm:88
146+
msgid "Read"
147+
msgstr ""
148+
149+
#: pages/index.scm:41
150+
msgid "Search by kanji, reading and meaning"
151+
msgstr ""
152+
153+
#: pages/documentation.scm:42
154+
msgid "Searching vocabulary"
155+
msgstr ""
156+
157+
#: pages/documentation.scm:49
158+
msgid "Settings"
159+
msgstr ""
160+
161+
#: pages/index.scm:39
162+
msgid "Specialized dictionary"
163+
msgstr ""
164+
165+
#: pages/documentation.scm:61
166+
msgid "Talk about it to fellow Japanese learners"
167+
msgstr ""
168+
169+
#: pages/documentation.scm:38
170+
msgid ""
171+
"Tap on the dictionary you want to add. You will be presented\n"
172+
"with more details on the dictionary and options to download, refresh or "
173+
"delete\n"
174+
"it. Once you have successfuly downloaded a dictionary, you are ready to use\n"
175+
"the app!"
176+
msgstr ""
177+
178+
#: pages/documentation.scm:48
179+
msgid "Tap on the search button and you'll see the results. Easy, right?"
180+
msgstr ""
181+
182+
#: pages/e404.scm:26
183+
msgid "That's a 404 :/"
184+
msgstr ""
185+
186+
#: pages/data.scm:37
187+
#, scheme-format
188+
msgid ""
189+
"The <a href=\"~a\">JMdict</a> project has as its goal the\n"
190+
"production of a freely available Japanese/English Dictionary in\n"
191+
"machine-readable form."
192+
msgstr ""
193+
194+
#: pages/data.scm:32
195+
msgid ""
196+
"The Electronic Dictionary Research and Development Group was\n"
197+
"established in 2000 within the Faculty of Information Technology, Monash\n"
198+
"University. Its goals are providing electronic dictionaries and\n"
199+
"computational linguistics."
200+
msgstr ""
201+
202+
#: pages/data.scm:45
203+
msgid ""
204+
"The original files are XML files with lots of entries. Since it's\n"
205+
"hard to search inside such big XML files, we modify them into a binary "
206+
"format\n"
207+
"that contains a search tree which makes it so much efficient to look for "
208+
"data."
209+
msgstr ""
210+
211+
#: tools/theme.scm:57
212+
#, scheme-format
213+
msgid ""
214+
"The source of this website can be seen at\n"
215+
"<a href=\"~a\">framagit</a>. This website is free software; you can "
216+
"redistribute\n"
217+
"it and/or modify it under the terms of the GNU Affero General Public "
218+
"License\n"
219+
"as published by the Free Software Foundation; either version 3 of the "
220+
"License,\n"
221+
"or (at your option) any later version."
222+
msgstr ""
223+
224+
#: pages/documentation.scm:50
225+
msgid "There are currently no settings."
226+
msgstr ""
227+
228+
#: pages/documentation.scm:32
229+
msgid ""
230+
"This application is based on multiple dictionaries that\n"
231+
"you can download in the app. They all add some functionality to the "
232+
"application.\n"
233+
"In the following sections we will see how to use them."
234+
msgstr ""
235+
236+
#: pages/documentation.scm:29
237+
msgid ""
238+
"This documentation will guide you in some of the most important\n"
239+
"aspects of the application. Please read it carefuly!"
240+
msgstr ""
241+
242+
#: pages/data.scm:41
243+
#, scheme-format
244+
msgid ""
245+
"This source is licensed under <a href=\"~a\">Creative Commons\n"
246+
"Share-Alike</a>. This data is available in monolingual (English) and "
247+
"multilingual,\n"
248+
"including Dutch, French, German and others."
249+
msgstr ""
250+
251+
#: pages/mentions.scm:32
252+
msgid ""
253+
"This website and the application do not collect or store personal "
254+
"information\n"
255+
"other than what is technically necessary to deliver web pages and content to "
256+
"the user."
257+
msgstr ""
258+
259+
#: pages/mentions.scm:28
260+
#, scheme-format
261+
msgid ""
262+
"This website is edited by Julien Lepiller and hosted by <a href=\"~a\" "
263+
"target=\"_blank\">One provider</a>."
264+
msgstr ""
265+
266+
#: pages/documentation.scm:43
267+
msgid ""
268+
"To be able to look for vocabulary, you must first download a\n"
269+
"dictionary. There are dictionaries for different languages."
270+
msgstr ""
271+
272+
#: pages/documentation.scm:52
273+
msgid ""
274+
"To develop the app, I use android studio. This is the best way to\n"
275+
"build it, because you can easily modify some of it too. If you don't want "
276+
"to\n"
277+
"use android studio, you can still build the app with only gradle."
278+
msgstr ""
279+
280+
#: pages/documentation.scm:35
281+
msgid ""
282+
"To download a dictionary, you need to click on the three dots\n"
283+
"at the top right of the screens and select ???Manage Dictionaries???. This will\n"
284+
"open a new view where you can select a dictionary in a list."
285+
msgstr ""
286+
287+
#: tools/theme.scm:75
288+
msgid "View posts for every language"
289+
msgstr ""
290+
291+
#: pages/index.scm:43
292+
msgid "Works offline with the features you want"
293+
msgstr ""
294+
295+
#: pages/documentation.scm:66
296+
msgid "Write some code and send me a patch"
297+
msgstr ""
298+
299+
#: pages/index.scm:51
300+
msgid "You can build it, contribute to it and its data sources"
301+
msgstr ""
302+
303+
#: pages/documentation.scm:55
304+
msgid "You can help too!"
305+
msgstr ""
306+
307+
#: tools/theme.scm:67
308+
#, scheme-format
309+
msgid "by ~a ??? ~a"
310+
msgstr ""

tools/i18n.scm unknown status 1

1+
;;; Nani Project website
2+
;;; Copyright ?? 2019 Julien Lepiller <julien@lepiller.eu>
3+
;;;
4+
;;; This file is part of the Nani Project website.
5+
;;;
6+
;;; The Nani Project website is free software; you can redistribute it and/or modify it
7+
;;; under the terms of the GNU Affero General Public License as published by
8+
;;; the Free Software Foundation; either version 3 of the License, or (at
9+
;;; your option) any later version.
10+
;;;
11+
;;; The Nani Project website is distributed in the hope that it will be useful, but
12+
;;; WITHOUT ANY WARRANTY; without even the implied warranty of
13+
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14+
;;; GNU Affero General Public License for more details.
15+
;;;
16+
;;; You should have received a copy of the GNU Affero General Public License
17+
;;; along with the Nani Project website.  If not, see <http://www.gnu.org/licenses/>.
18+
19+
(define-module (tools i18n)
20+
  #:use-module (haunt builder blog)
21+
  #:use-module (haunt html)
22+
  #:use-module (haunt page)
23+
  #:use-module (sxml simple)
24+
  #:use-module (ice-9 match)
25+
  #:export (internationalize languages _ site-locale))
26+
27+
(define language-map
28+
  `(("" . "en_US.UTF-8")
29+
    ("en" . "en_US.UTF-8")
30+
    ("fr" . "fr_FR.UTF-8")))
31+
32+
(define languages
33+
  (map car language-map))
34+
35+
(define (site-locale locale)
36+
  (setlocale LC_ALL
37+
    (assoc-ref language-map locale))
38+
  (bindtextdomain "nani" (string-append (dirname (current-filename)) "/../po"))
39+
  (textdomain "nani"))
40+
41+
(site-locale "fr")
42+
43+
(define (__ tr . args)
44+
  (xml->sxml (apply format #f (format #f "<tr>~a</tr>" (gettext tr)) args)))
45+
46+
(define (_ tr . args)
47+
  (let ((res (apply __ tr args)))
48+
    (match res
49+
      ((*TOP* (tr rest ...)) rest))))
50+
51+
(define (tr body)
52+
  (match body
53+
    (('_ rest ...) (apply _ rest))
54+
    ((tag ('@ opt ...) rest ...) (apply list tag (apply list '@ opt) (map tr rest)))
55+
    ((tag rest ...) (apply list tag (map tr rest)))
56+
    (foo foo)))
57+
58+
(define (make-my-page lang title filename body layout)
59+
  (lambda (site posts)
60+
    (define (my-body)
61+
      (site-locale lang)
62+
      (tr body))
63+
    (make-page (if (equal? lang "")
64+
                 (string-append filename ".html")
65+
                 (string-append filename "." lang ".html"))
66+
               (with-layout (layout lang filename) site title (my-body))
67+
               sxml->html)))
68+
69+
(define (internationalize title filename body layout)
70+
  (map (lambda (lang) (make-my-page lang title filename body layout)) languages))

tools/theme.scm unknown status 1

1+
;;; Nani Project website
2+
;;; Copyright ?? 2019 Julien Lepiller <julien@lepiller.eu>
3+
;;;
4+
;;; This file is part of the Nani Project website.
5+
;;;
6+
;;; The Nani Project website is free software; you can redistribute it and/or modify it
7+
;;; under the terms of the GNU Affero General Public License as published by
8+
;;; the Free Software Foundation; either version 3 of the License, or (at
9+
;;; your option) any later version.
10+
;;;
11+
;;; The Nani Project website is distributed in the hope that it will be useful, but
12+
;;; WITHOUT ANY WARRANTY; without even the implied warranty of
13+
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14+
;;; GNU Affero General Public License for more details.
15+
;;;
16+
;;; You should have received a copy of the GNU Affero General Public License
17+
;;; along with the Nani Project website.  If not, see <http://www.gnu.org/licenses/>.
18+
19+
(define-module (tools theme)
20+
  #:use-module (haunt builder blog)
21+
  #:use-module (haunt post)
22+
  #:use-module (haunt site)
23+
  #:use-module (tools i18n)
24+
  #:use-module (srfi srfi-1)
25+
  #:export (nani-theme))
26+
27+
(define (nani-theme lang page)
28+
  (theme #:name "Nani"
29+
         #:layout
30+
         (lambda (site title body)
31+
           (site-locale lang)
32+
           `((doctype "html")
33+
             (head
34+
               (meta (@ (charset "utf-8")))
35+
               (meta (@ (name "viewport") (content "width=device-width, initial-scale=1")))
36+
               (title ,(list title " ??? " (site-title site)))
37+
               (link (@ (rel "stylesheet") (href "/css/nani.css")))
38+
               (link (@ (rel "stylesheet") (href "/css/device.css"))))
39+
             (body (@ (lang ,lang))
40+
               (header
41+
                 (span (a (@ (href "/")) "????"))
42+
                 (nav (@ (id "main-menu"))
43+
                   (label (@ (for "hamburger") (id "hamburger-label"))
44+
                     (img (@ (alt "(open the menu)") (src "/images/hamburger.png"))))
45+
                   (input (@ (id "hamburger") (type "checkbox")))
46+
                   (ul
47+
                     (li (a (@ (href "/index.html")) ,(_ "Features")))
48+
                     (li (a (@ (href "/documentation.html")) ,(_ "Documentation")))
49+
                     (li (a (@ (href "https://framagit.org/nani-project/nani-app"))
50+
                            ,(_ "Build it"))))))
51+
               (div (@ (id "page"))
52+
                 (div (@ (id "content-block")) (div (@ (id "content")) ,body)))
53+
               (footer
54+
                 (div (@ (class "footer-flex"))
55+
                   (p "?? Copyright Julien Lepiller 2019")
56+
                   (p (a (@ (href "/mentions.html")) ,(_ "Legal notices"))))
57+
                 (p ,(_ "The source of this website can be seen at
58+
<a href=\"~a\">framagit</a>. This website is free software; you can redistribute
59+
it and/or modify it under the terms of the GNU Affero General Public License
60+
as published by the Free Software Foundation; either version 3 of the License,
61+
or (at your option) any later version."
62+
                    "https://framagit.org/nani-project/nani-website"))))))
63+
         #:post-template
64+
         (lambda (post)
65+
           `((article
66+
             (h1 ,(post-ref post 'title))
67+
             (p (@ (class "date")) ,(_ "by ~a ??? ~a" (post-ref post 'author) (date->string* (post-date post))))
68+
             (div ,(post-sxml post)))))
69+
         #:collection-template
70+
         (lambda (site title posts prefix)
71+
           (define (post-uri post)
72+
             (string-append "/" (or prefix "")
73+
                            (site-post-slug site post) ".html"))
74+
           `(div
75+
              (p (a (@ (href "/blog-complete.html")) ,(_ "View posts for every language")))
76+
              (div (@ (id "post-list"))
77+
                ,@(map (lambda (post)
78+
                         (let ((language (fold (lambda (key acc) (if (member key (post-ref post 'tags)) key acc)) "" languages)))
79+
                           `(div (@ (class ,(string-append "post " language)))
80+
                              (p (@ (class "title"))
81+
                                 (a (@ (href ,(post-uri post)))
82+
                                    ,(post-ref post 'title)))
83+
                              (p (@ (class "post-content"))
84+
                                 ,(post-ref post 'summary))
85+
                              (p (@ (class "date"))
86+
                                 (span
87+
                                   (a (@ (href ,(post-uri post)))
88+
                                        ,(_ "Read")))
89+
                                 (span (@ (class ,language)) ,language)
90+
                                 ,(date->string* (post-date post))))))
91+
                    posts))))))