🌐 german translation

This commit is contained in:
DrMaxNix 2024-09-11 21:28:41 +02:00
parent 7663e3a43a
commit 73108f693a
3 changed files with 63 additions and 99 deletions

View File

@ -1,6 +1,6 @@
body { body {
font-family: Futura, sans-serif; font-family: Futura, sans-serif;
background-color: #9ED2FF; background-color: #FFCF9E;
} }
footer { footer {

View File

@ -1,40 +1,5 @@
she her her hers herself sie ihr ihr ihres sie
he him his his himself er ihm sein seines ihn
they them their theirs themselves hen hem hens hens hen
ze hir hir hirs hirself dey dem deir deirs dem
ze zir zir zirs zirself dey dem deren deren dem
xey xem xyr xyrs xemself
ae aer aer aers aerself
e em eir eirs emself
ey em eir eirs eirself
fae faer faer faers faerself
fey fem feir feirs feirself
hu hum hus hus humself
it it its its itself
jee jem jeir jeirs jemself
kit kit kits kits kitself
ne nem nir nirs nemself
peh pehm peh's peh's pehself
per per per pers perself
sie hir hir hirs hirself
se sim ser sers serself
shi hir hir hirs hirself
si hyr hyr hyrs hyrself
they them their theirs themself
thon thon thons thons thonself
ve ver vis vis verself
ve vem vir virs vemself
vi ver ver vers verself
vi vim vir virs vimself
vi vim vim vims vimself
xie xer xer xers xerself
xe xem xyr xyrs xemself
xey xem xeir xeirs xemself
yo yo yos yos yosself
ze zem zes zes zirself
ze mer zer zers zemself
zee zed zeta zetas zedself
zie zir zir zirs zirself
zie zem zes zes zirself
zie hir hir hirs hirself
zme zmyr zmyr zmyrs zmyrself

View File

@ -28,8 +28,8 @@
(let [c (count items)] (let [c (count items)]
(cond (cond
(<= c 1) (or (first items) "") (<= c 1) (or (first items) "")
(= c 2) (s/join " and " items) (= c 2) (s/join " und " items)
:else (str (s/join ", " (butlast items)) ", and " (last items))))) :else (str (s/join ", " (butlast items)) ", und " (last items)))))
(defn href (defn href
[url text] [url text]
@ -44,77 +44,76 @@
(defn render-sentence [& content] (defn render-sentence [& content]
[:p.sentence content]) [:p.sentence content])
(defn subject-example (defn nominativ-example
[subject] [nominativ]
(render-sentence (wrap-pronoun (s/capitalize subject)) " went to the park.")) (render-sentence (wrap-pronoun (s/capitalize nominativ)) " ging in den Park."))
(defn object-example (defn dativ-example
[object] [dativ]
(render-sentence "I went with " (wrap-pronoun object) ".")) (render-sentence "Ich ging mit " (wrap-pronoun dativ) "."))
(defn posessive-determiner-example (defn possessiv-example
[subject possessive-determiner] [nominativ possessiv]
(render-sentence (wrap-pronoun (s/capitalize subject)) (render-sentence (wrap-pronoun (s/capitalize nominativ))
" brought " " hatte "
(wrap-pronoun possessive-determiner) (wrap-pronoun possessiv)
" frisbee.")) " Frisbee dabei."))
(defn possessive-pronoun-example (defn genitiv-example
[possessive-pronoun] [genitiv]
(render-sentence "At least I think it was " (render-sentence "Zumindest glaube ich, es war "
(wrap-pronoun possessive-pronoun) (wrap-pronoun genitiv)
".")) "."))
(defn reflexive-example (defn akkusativ-example
[subject reflexive] [akkusativ]
(render-sentence (wrap-pronoun (s/capitalize subject)) (render-sentence "Ich habe "
" threw the frisbee to " (wrap-pronoun akkusativ)
(wrap-pronoun reflexive) " gestern schon damit gesehen."))
"."))
(defn header-block [header] (defn header-block [header]
[:div {:class "section title"} [:div {:class "section title"}
(href "/" [:h1 header])]) (href "/" [:h1 header])])
(defn examples-block (defn examples-block
[subject object possessive-determiner possessive-pronoun reflexive] [nominativ dativ possessiv genitiv akkusativ]
(let [sub-obj (s/join "/" [subject object]) (let [sub-obj (s/join "/" [nominativ dativ])
header-str (str "Here are some example sentences using my " header-str (str "Hier sind einige Beispielsätze mit meinen "
sub-obj sub-obj
" pronouns:")] " Pronomen:")]
[:div {:class "section examples"} [:div {:class "section examples"}
[:h2 header-str] [:h2 header-str]
[:div (subject-example subject) [:div (nominativ-example nominativ)
(object-example object) (dativ-example dativ)
(posessive-determiner-example subject possessive-determiner) (possessiv-example nominativ possessiv)
(possessive-pronoun-example possessive-pronoun) (genitiv-example genitiv)
(reflexive-example subject reflexive)]])) (akkusativ-example akkusativ)]]))
(defn usage-block [] (defn usage-block []
[:div {:class "section usage"} [:div {:class "section usage"}
[:p "Full usage: " [:p "Volle Verwendung: "
;; FIXME morgan.astra <2018-11-14 Wed> ;; FIXME morgan.astra <2018-11-14 Wed>
;; This looks really ugly in the browser ;; This looks really ugly in the browser
[:tt "https://pronomen.lol/subject-pronoun/object-pronoun/possessive-determiner/possessive-pronoun/reflexive"] [:tt "https://pronomen.lol/nominativ/dativ/possessiv/genitiv/akkusativ"]
" displays examples of your pronouns."] " zeigt Beispiele zu deinen Pronomen."]
[:p "This is a bit unwieldy. If we have a good guess we'll let you use" [:p "Das ist ein wenig unhandlich. Bei Pronomen, die der Webseite bekannt sind"
" just the first one or two."]]) " reichen die ersten ein bis zwei Parameter."]])
(defn contact-block [] (defn contact-block []
[:div {:class "section contact"} [:div {:class "section contact"}
[:p "Written by morganastra (" [:p "Geschrieben von morganastra ("
(href "https://pronomen.lol/she" "pronomen.lol/she") (href "https://pronomen.lol/sie" "pronomen.lol/sie")
")"] ")"]
[:p "pronomen.lol is free software under the " [:p "pronomen.lol ist freie Software unter der Lizenz "
(href "https://www.gnu.org/licenses/agpl.html" "AGPLv3") (href "https://www.gnu.org/licenses/agpl.html" "AGPLv3")
"! visit the project on " "! besuche des Projekt auf "
(href "https://git.tjdev.de/kimendisch/pronomen.lol" "Git")] (href "https://git.tjdev.de/kimendisch/pronomen.lol" "Git")]
[:p "Hosted by Kim Endisch (" [:p "Betrieben durch Kim Endisch ("
(href "https://pronomen.lol/they" "pronomen.lol/they") (href "https://pronomen.lol/dey" "pronomen.lol/dey")
")"] ")"]
[:p (href "https://www.tjdev.de/imprint" "Imprint") [:p (href "https://www.tjdev.de/impressum" "Impressum")
" | " " | "
(href "https://www.tjdev.de/privacy" "Privacy Policy")] (href "https://www.tjdev.de/datenschutz" "Datenschutzerklärung")]
[:p "&lt;3"]]) [:p "&lt;3"]])
(defn footer-block [] (defn footer-block []
@ -123,7 +122,7 @@
(defn format-pronoun-examples (defn format-pronoun-examples
[pronoun-declensions] [pronoun-declensions]
(let [sub-objs (map #(s/join "/" (take 2 %)) pronoun-declensions) (let [sub-objs (map #(s/join "/" (take 2 %)) pronoun-declensions)
title (str "Pronomen LOL: " (prose-comma-list sub-objs) " examples") title (str "Pronomen LOL: " (prose-comma-list sub-objs) " Beispiele")
examples (map #(apply examples-block %) pronoun-declensions)] examples (map #(apply examples-block %) pronoun-declensions)]
(html (html
[:html [:html
@ -166,7 +165,7 @@
(let [abbreviations (take 6 (u/abbreviate @pronouns-table)) (let [abbreviations (take 6 (u/abbreviate @pronouns-table))
links (map make-link abbreviations) links (map make-link abbreviations)
title "Pronomen LOL" title "Pronomen LOL"
description "Pronomen.lol is a website for personal pronoun usage examples."] description "Pronomen.lol ist eine Webseite mit Beispielen zur Nutzung persönlicher Pronomen."]
(html (html
[:html [:html
[:head [:head
@ -183,10 +182,10 @@
[:body [:body
(header-block title) (header-block title)
[:div {:class "section table"} [:div {:class "section table"}
[:p "pronomen.lol is a website for personal pronoun usage examples"] [:p "pronomen.lol ist eine Webseite mit Beispielen zur Nutzung persönlicher Pronomen"]
[:p "here are some pronouns the site knows about:"] [:p "hier einige Pronomen, die diese Webseite kennt:"]
[:ul links] [:ul links]
[:p [:small (href "all-pronouns" "see all pronouns in the database")]]]] [:p [:small (href "all-pronouns" "alle Pronomen ansehen")]]]]
(footer-block)]))) (footer-block)])))
(defn all-pronouns [] (defn all-pronouns []
@ -205,12 +204,12 @@
[:body [:body
(header-block title) (header-block title)
[:div {:class "section table"} [:div {:class "section table"}
[:p "All pronouns the site knows about:"] [:p "Alle Pronomen, die diese Webseite kennt:"]
[:ul links]]] [:ul links]]]
(footer-block)]))) (footer-block)])))
(defn not-found [path] (defn not-found [path]
(let [title "Pronomen LOL: English Language Examples" (let [title "Pronomen LOL: Beispiele in Deutscher Sprache"
or-re #"/[oO][rR]/"] or-re #"/[oO][rR]/"]
(html (html
[:html [:html
@ -224,13 +223,13 @@
[:body [:body
(header-block title) (header-block title)
[:div {:class "section examples"} [:div {:class "section examples"}
[:p [:h2 "We couldn't find those pronouns in our database :("] [:p [:h2 "Wir konnten diese Pronomen nicht in unserer Datenbank finden :("]
"If you think we should have them, please reach out!"] "Wenn Du denkst, die Seite sollte diese Pronomen kennen, gib Bescheid!"]
(when (re-find or-re path) (when (re-find or-re path)
(let [alts (s/split path or-re) (let [alts (s/split path or-re)
new-path (str "/" (s/join "/:OR/" alts))] new-path (str "/" (s/join "/:OR/" alts))]
[:div [:div
"Did you mean: " "Meintest Du: "
(href new-path (href new-path
(str "pronomen.lol" (str "pronomen.lol"
new-path))]))] new-path))]))]
@ -238,8 +237,8 @@
(defn pronouns [params] (defn pronouns [params]
(let [path (params :*) (let [path (params :*)
param-alts (u/vec-coerce (or (params "or") [])) param-alts (u/vec-coerce (or (params "oder") []))
path-alts (s/split path #"/:[oO][rR]/") path-alts (s/split path #"/:[oO][dD][eE][rR]/")
pronouns (lookup-pronouns (concat path-alts param-alts))] pronouns (lookup-pronouns (concat path-alts param-alts))]
(if (seq pronouns) (if (seq pronouns)
(format-pronoun-examples pronouns) (format-pronoun-examples pronouns)