Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

German language integration #389

Open
wants to merge 13 commits into
base: master
Choose a base branch
from
Open
2 changes: 2 additions & 0 deletions docs/_includes/header.html
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@
{% assign url = 'ja' %}
{% elsif page.url contains '/ch/' %}
{% assign url = 'ch' %}
{% elsif page.url contains '/de/' %}
{% assign url = 'de' %}
{% else %}
{% assign url = '' %}
{% endif %}
Expand Down
8 changes: 8 additions & 0 deletions docs/_includes/nav.html
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,14 @@
<li><a href="{{ site.baseurl }}/ch/faq" class="{% if page.url == '/ch/faq/' %}activeMenuItem{% endif %}" title="FAQ">FAQ</a></li>
<li><a href="{{ site.baseurl }}/ch/blog" class="{% if page.url == '/ch/blog/' %}activeMenuItem{% endif %}" title="Blog">Blog</a></li>
<li><a href="{{ site.baseurl }}/ch/development" class="{% if page.url == '/ch/development/' %}activeMenuItem{% endif %}" title="Development">Development</a></li>
{% elsif page.url contains '/de/' %}
<li><a href="{{ site.baseurl }}/de" class="{% if page.url == '/de/' %}activeMenuItem{% endif %}" title="Home">Startseite</a></li>
<li><a href="{{ site.baseurl }}/de/download" class="{% if page.url == '/de/download/' %}activeMenuItem{% endif %}" title="Download">Herunterladen</a></li>
<li><a href="{{ site.baseurl }}/de/user-guide" class="{% if page.url == '/de/user-guide/' %}activeMenuItem{% endif %}" title="Documents">Dokumente</a></li>
<li><a href="{{ site.baseurl }}/de/api-reference" class="{% if page.url == '/de/api-reference/' %}activeMenuItem{% endif %}" title="API Reference">Schnittstellenreferenz (API)</a></li>
<li><a href="{{ site.baseurl }}/de/faq" class="{% if page.url == '/de/faq/' %}activeMenuItem{% endif %}" title="FAQ">FAQ</a></li>
<li><a href="{{ site.baseurl }}/de/blog" class="{% if page.url == '/de/blog/' %}activeMenuItem{% endif %}" title="Blog">Blog</a></li>
<li><a href="{{ site.baseurl }}/de/development" class="{% if page.url == '/de/development/' %}activeMenuItem{% endif %}" title="Development">Entwicklung</a></li>
{% else %}
<li><a href="{{ site.baseurl }}/" class="{% if page.url == '/' %}activeMenuItem{% endif %}" title="Home">Home</a></li>
<li><a href="{{ site.baseurl }}/en/download" class="{% if page.url == '/en/download/' %}activeMenuItem{% endif %}" title="Download">Download</a></li>
Expand Down
21 changes: 21 additions & 0 deletions docs/_includes/navigation.html
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,10 @@ <h4 class="widget-title"><i class="fa fa-search" aria-hidden="true"></i> Search<
<form action="{{ site.baseurl }}/ch/search.html" class="search-form-navi" method="get">
<input type="text" class="search-box-navi" placeholder="" name="q">
<input type="submit" class="search-button-navi" value="搜索">
{% elsif page.url contains '/de/' %}
<form action="{{ site.baseurl }}/de/search.html" class="search-form-navi" method="get">
<input type="text" class="search-box-navi" placeholder="" name="q">
<input type="submit" class="search-button-navi" value="Suche">
{% else %}
<form action="{{ site.baseurl }}/en/search.html" class="search-form-navi" method="get">
<input type="text" class="search-box-navi" placeholder="" name="q">
Expand All @@ -22,24 +26,39 @@ <h4 class="widget-title"><i class="fa fa-globe" aria-hidden="true"></i> Language
<li><a href="{{ site.baseurl }}{{ en_url }}" class="language-link">English</a></li>
{% assign ja_url = url | replace: '/en/', '/ja/' %}
{% assign ch_url = url | replace: '/en/', '/ch/' %}
{% assign ch_url = url | replace: '/en/', '/de/' %}
<li><a href="{{ site.baseurl }}{{ ja_url }}" class="language-link">日本語 (Japanese)</a></li>
<li><a href="{{ site.baseurl }}{{ ch_url }}" class="language-link">中文(简体) (Chinese-Simplified)</a></li>
<li><a href="{{ site.baseurl }}{{ de_url }}" class="language-link">Deutsch</a></li>
{% elsif page.url contains '/ja/' %}
<li><a href="{{ site.baseurl }}{{ page.url }}" class="language-link">日本語 (Japanese)</a></li>
{% assign en_url = url | replace: '/ja/', '/en/' %}
{% assign ch_url = url | replace: '/ja/', '/ch/' %}
{% assign ch_url = url | replace: '/ja/', '/de/' %}
<li><a href="{{ site.baseurl }}{{ en_url }}" class="language-link">English</a></li>
<li><a href="{{ site.baseurl }}{{ ch_url }}" class="language-link">中文(简体) (Chinese-Simplified)</a></li>
<li><a href="{{ site.baseurl }}{{ de_url }}" class="language-link">Deutsch</a></li>
{% elsif page.url contains '/ch/' %}
<li><a href="{{ site.baseurl }}{{ page.url }}" class="language-link">中文(简体) (Chinese-Simplified)</a></li>
{% assign en_url = url | replace: '/ch/', '/en/' %}
{% assign ja_url = url | replace: '/ch/', '/ja/' %}
{% assign ch_url = url | replace: '/ch/', '/de/' %}
<li><a href="{{ site.baseurl }}{{ en_url }}" class="language-link">English</a></li>
<li><a href="{{ site.baseurl }}{{ ja_url }}" class="language-link">日本語 (Japanese)</a></li>
<li><a href="{{ site.baseurl }}{{ de_url }}" class="language-link">Deutsch</a></li>
{% elsif page.url contains '/de/' %}
<li><a href="{{ site.baseurl }}{{ page.url }}" class="language-link">Deutsch</a></li>
{% assign en_url = url | replace: '/de/', '/en/' %}
{% assign ja_url = url | replace: '/de/', '/ja/' %}
{% assign ja_url = url | replace: '/de/', '/ch/' %}
<li><a href="{{ site.baseurl }}{{ en_url }}" class="language-link">English</a></li>
<li><a href="{{ site.baseurl }}{{ ja_url }}" class="language-link">日本語 (Japanese)</a></li>
<li><a href="{{ site.baseurl }}{{ ch_url }}" class="language-link">中文(简体) (Chinese-Simplified)</a></li>
{% else %}
<li><a href="{{ site.baseurl }}/en/" class="language-link">English</a></li>
<li><a href="{{ site.baseurl }}/ja/" class="language-link">日本語 (Japanese)</a></li>
<li><a href="{{ site.baseurl }}/ch/" class="language-link">中文(简体) (Chinese-Simplified)</a></li>
<li><a href="{{ site.baseurl }}/de/" class="language-link">Deutsch</a></li>
{% endif %}
</ul>

Expand All @@ -51,6 +70,8 @@ <h4 class="widget-title"><i class="fa fa-book" aria-hidden="true"></i> Users Gui
{% include generateDynamicMenu.html root="/ja/user-guide/" %}
{% elsif page.url contains '/ch/' %}
{% include generateDynamicMenu.html root="/ch/user-guide/" %}
{% elsif page.url contains '/de/' %}
{% include generateDynamicMenu.html root="/de/user-guide/" %}
{% else %}
{% include generateDynamicMenu.html root="/en/user-guide/" %}
{% endif %}
Expand Down
2 changes: 2 additions & 0 deletions docs/_layouts/default.html
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@
<html lang="ja">
{% elsif page.url contains '/ch/' %}
<html lang="zh">
{% elsif page.url contains '/de/' %}
<html lang="de">
{% else %}
<html lang="en">
{% endif %}
Expand Down
2 changes: 2 additions & 0 deletions docs/_layouts/docindex.html
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,8 @@ <h2>{{page.title}}</h2>
{% include generateDynamicMenu.html root="/ja/user-guide/" %}
{% elsif page.url contains '/ch/' %}
{% include generateDynamicMenu.html root="/ch/user-guide/" %}
{% elsif page.url contains '/de/' %}
{% include generateDynamicMenu.html root="/de/user-guide/" %}
{% else %}
{% include generateDynamicMenu.html root="/en/user-guide/" %}
{% endif %}
Expand Down
10 changes: 10 additions & 0 deletions docs/de/api-reference/index.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
---
title: API Reference
page_id: "api-reference.00"
---

## API Reference

Published documents generated by Doxygen.

[TreeFrog Framework API Reference >>](http://api-reference.treefrogframework.org/annotated.html){:target="_blank"}
37 changes: 37 additions & 0 deletions docs/de/blog/index.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
---
title: Blog
page_id: "blog.00"
---

## Web Framework Benchmarks - Runde 15

<https://www.techempower.com/benchmarks/#section=data-r15>{:target="_blank"}


## Web Framework Benchmarks - Runde 13

<https://www.techempower.com/benchmarks/#section=data-r13>{:target="_blank"}

Nach dem Hinzufügen der MongoDB-Anbindung wurde diese Kombination auf dem Prüfstand getestet. Ergänzungen zu den Benchmark-Ergebnissen:

- treefrog: TreeFrog (MPM:thread) + MySQL
- treefrog-postgres: TreeFrog (MPM:thread) + PostgreSQL
- treefrog-mongo: TreeFrog (MPM:thread) + MongoDB
- thread-hybrid: treefrog (MPM:hybrid) + MySQL


## Minimalistischer C++-Interpreter

Ich habe einen minimalistischen C++11-Interpreter erstellt, der nützlich ist, wenn Sie Ihren C++11-Code überprüfen möchten.

<http://treefrogframework.github.io/cpi/>


## Chat-App auf WebSocket-Basis

Chat-Beispielapplikation auf WebSocket-Basis. Probier es aus!
Ich werde eine entsprechende Anleitung zum Erstellen dieser Applikation hochladen.

<http://chatsample.treefrogframework.org>

Der Server wurde mit dem TreeFrog-Framework erstellt.
17 changes: 17 additions & 0 deletions docs/de/development/index.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
---
title: development
page_id: "development.00"
---

## Entwicklung

Das TreeFrog-Framework - Repository steht auf GitHub bereit:

[<i class="fab fa-github"></i> https://github.com/treefrogframework](https://github.com/treefrogframework){:target="_blank"}

Falls Sie einen Patch erstellt haben, senden Sie bitte einen Pull-Request mit Ihren Kommentaren zum Repository.


### Forum

Diskussionsgruppe für das TreeFrog-Framework: [https://groups.google.com/forum/#!forum/treefrogframework](https://groups.google.com/forum/#!forum/treefrogframework){:target="_blank"}
69 changes: 69 additions & 0 deletions docs/de/download/index.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
---
title: download
page_id: "download.00"
---

## Download

### Installationsassistent für Windows

Wir stellen einen Installationsassistenten für Qt6 zur Verfügung. Nach der Einrichtung verfügen Sie im Handumdrehen über eine TreeFrog-Framework-Entwicklungsumgebung. Es ist nicht erforderlich, den Quellcode zu bauen und zu installieren, daher ist dieser Installationsassistent für diejenigen geeignet, die schnell eine Umgebung erstellen möchten. Vor der Ausführung des Installationsassistenten muss Qt6 für Windows installiert werden.

<div class="table-div" markdown="1">

| Version | Datei |
|-------------------------------------|--------------------------------------|
| 2.7.1 für Visual Studio 2019 (Qt 6.4 or 6.3)| [<i class="fa fa-download" aria-hidden="true"></i> treefrog-2.7.1-msvc_64-setup.exe](https://github.com/treefrogframework/treefrog-framework/releases/download/v2.7.1/treefrog-2.7.1-msvc_64-setup.exe) |

</div>

## Quellcode

Das Quellcode-Paket des TreeFrog-Frameworks ist ebenfalls verfügbar.

<div class="table-div" markdown="1">

| Source | Datei |
|----------------|----------------------------------|
| Version 2.7.1 | [<i class="fa fa-download" aria-hidden="true"></i> treefrog-framework-2.7.1.tar.gz](https://github.com/treefrogframework/treefrog-framework/archive/v2.7.1.tar.gz) |

</div>

[Alle vorhergehenden Versionen <i class="fa fa-angle-double-right" aria-hidden="true"></i>](https://github.com/treefrogframework/treefrog-framework/releases)

Der Letztstand des Quellcodes befindet sich auf [GitHub](https://github.com/treefrogframework/).

## Homebrew

Siehe die Homebrew-[Seite](https://formulae.brew.sh/formula/treefrog) von TreeFrog. Dieser kann mittels Homebrew auf macOS-basierten Geräten wie folgt installiert werden:

```
$ brew install treefrog
```

Wenn der SQL-Treiber für Qt korrekt installiert wurde, dann werden die folgenden Ausgaben angezeigt:

```
$ tspawn --show-drivers
Available database drivers for Qt:
QSQLITE
QMARIADB
QMYSQL
QPSQL
```

Wenn `QMARIADB` oder `QPSQL` nicht angezeigt werden sollten, dann sind die jeweiligen Treiber nicht am dafür vorgesehenen Speicherort abgelegt. Führen Sie folgende Befehle aus um den entsprechenden Treiber-Pfad zu überprüfen und kopieren Sie den Treiber manuell in den dafür vorgesehenen Ordner:

```
Example:
$ cd $(tspawn --show-driver-path)
$ pwd
(your_brew_path)/Cellar/qt/6.2.3_1/share/qt/plugins/sqldrivers
```

Nach dem Kopieren des Treibers sollten die folgenden Ausgaben mittels des `ls`-Befehls angezeigt werden:

```
$ ls $(tspawn --show-driver-path)
libqsqlite.dylib libqsqlmysql.dylib libqsqlpsql.dylib
```
15 changes: 15 additions & 0 deletions docs/de/faq/index.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
---
title: faq
page_id: "faq.00"
---

## FAQ

Frage: Gibt es ein Docker-Image für das TreeFrog-Framework?

Antwort: Ja, die Images dafür wurden auf Docker Hub veröffentlicht: [https://hub.docker.com/r/treefrogframework/](https://hub.docker.com/r/treefrogframework/){:target="_blank"}


Frage: Ich erhalte folgende Fehlermeldung: `Incorrect string value: '\xE3\x81\x82' for column 'xxxx' at row 1 QMYSQL: Unable to execute query` bei MySQL. Weswegen erhalte ich diese Fehlermeldung?

Antwort: Es handelt sich dabei um ein Zeichensatzproblem, bitte überprüfen Sie den entsprechenden Zeichensatz Ihrer Tabelle. Zur Vermeidung solcher Fehler sollten Sie den Default-Zeichensatz beim Erstellen der Tabelle mittels `DEFAULT CHARSET=UTF8`` gleich mitangeben.
114 changes: 114 additions & 0 deletions docs/de/index.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,114 @@
---
title: Startseite
page_id: "home.00"
---

## <i class="fa fa-bolt" aria-hidden="true"></i> Klein, aber leistungsstark und effizient

Das TreeFrog Framework ist ein Hochperformanz- und Full-Stack-C++-Framework für die Entwicklung von Webanwendungen, welches die HTTP- und WebSocket-Protokolle unterstützt.

Webanwendungen können schneller ausgeführt werden als Skriptsprachen, da das serverseitige Framework in C++/Qt geschrieben wurde. Bei der Anwendungsentwicklung stellt es ein objektrelationales Mapping-System und ein Templating-System auf einer MVC-Architektur bereit und zielt darauf ab höchste Produktivität, durch Konvention über Konfiguration, zu erreichen.


## <i class="fa fa-flag" aria-hidden="true"></i> Kennzeichnungsmerkmale

1. Hochperformanz - hoch-optimierte Anwendungsserver-Engine auf C++-Basis.
2. Objektrelationales Mapping - kapselt komplexe und umständliche Datenbankzugriffe
3. Templating-System - Adapation einer ERB-ähnlichen Template-Engine
4. Unterstützte Datenbanken - MySQL, MariaDB, PostgreSQL, ODBC, MongoDB, Redis, Memcached, etc.
5. WebSocket-Unterstützung - stellt vollduplex Kommunikationskanäle bereit
6. Generator - generiert Codegerüst, Makefile und vue.js - Vorlagen
7. Unterstützung für unterschiedliches Rückgabetypen - JSON, XML und CBOR
8. Multiplatform-Fähigkeit - derselbe Quellcode kann somit auf Windows, macOS und Linux funktionieren
9. OSS - quelloffene Software, mittels New-BSD-Lizenz


## <i class="fa fa-comment" aria-hidden="true"></i> Weswegen das TreeFrog-Framework?

Es wird gesagt, dass es bei der Entwicklung von Webanwendungen einen Kompromiss zwischen Entwicklungseffizienz und Betriebsgeschwindigkeit gibt. Stimmt das wirklich?

So etwas gibt es nicht. Durch die Bereitstellung praktischer Entwicklungswerkzeuge und hervorragender Bibliotheken aus dem Framework, sowie durch die Angabe von Spezifikationen zur Minimierung der Konfigurationsdatei, ist eine effiziente Entwicklung möglich.

In den letzten Jahren ist das Cloud-Computing aufgekommen, die Bedeutung von Webanwendungen nimmt von Jahr zu Jahr zu. Obwohl bekannt ist, dass die Ausführungsgeschwindigkeit von Skriptsprachen mit zunehmender Codemenge abnimmt, kann die Sprache C++ mit der höchsten Geschwindigkeit und einem geringen Speicherbedarf arbeiten ohne dabei die Ausführungsgeschwindigkeit zu vermindern, selbst wenn die Codemenge zunimmt.

Mehrere Anwendungsserver, die Skriptsprache ausführen, können ohne Leistungseinbußen zu einem zusammengefasst werden. Probiere das TreeFrog-Framework aus, das hohe Produktivität und Hochgeschwindigkeitsbetrieb kombiniert!


## <i class="fa fa-bell" aria-hidden="true"></i> Neuigkeiten

### 2023-03-26 TreeFrog-Framework Version 2.7.1 (stable-release) <span style="color: red;">Neu!</span>

- Behebung eines Fehlers beim Öffnen des Shared-Memory-KVS.
- Behebung des Fehlers, dass "NotFound" zurückgegeben wurde, wenn eine Action nicht aufgerufen werden konnte.

[<i class="fas fa-download"></i> Lade diese Version herunter](/de/download/)

### 2023-02-25 TreeFrog-Framework Version 2.7.0 (stable-release)

- Behebung der Möglichkeit von Thread-Konflikten beim Empfang von Paketen.
- Änderung des Hash-Algorithmus auf SHA3-HMAC.
- Hinzufügen des memcached als Session-Store.
- Aktualisierung des malloc-Algorithmuses der TSharedMemoryAllocator-Klasse.
- Aktualisierung des System-Loggers.
- Geschwindigkeitsoptimierung des Poolingsverfahrens für Datenbankverbindungen.

### 2023-01-21 TreeFrog-Framework Version 2.6.1 (stable-release)

- Behebung eines Access-Log-Ausgabe-Bugs.
- Hinzufügen einer Link-Option für die LZ4-Shared-Library auf Linux oder macOS.

### 2023-01-02 TreeFrog-Framework Version 2.6.0 (stable-release)

- Implementierung eines in-memory KVS für das Cache-System.
- Hinzufügen einer Link-Option für die Glog-Shared-Library.
- Behebung eines Makro-Fehlers für das Kommandozeileninterface.
- Aktualisierung von LZ4 auf v1.9.4.

### 2022-11-01 TreeFrog-Framework Version 2.5.0 (stable-release)

- Implementierung der flushResponse()-Funktion um den Prozess nach dem Senden einer Response weiterlaufen zu lassen.
- Aktualisierung von glog auf v0.6.0.
- Geschwindigkeitsverbesserungen für den Redis-Client.
- Implementierung eines memcached-Client. [experimentell]
- Implementierung eines Cache-Store für memcached, die TCacheMemcachedStore-Klasse.

### 2022-08-13 TreeFrog-Framework Version 2.4.0 (stable-release)

- Implementierung eines Memory-Store für den Cache.
- Aktualisierung des MongoDB C-Treibers auf v1.21.2.

### 2022-05-28 TreeFrog-Framework Version 2.3.1 (stable-release)

- Behebung eines Kompilierungsfehlers beim Einsatz von Qt 6.3.

[<i class="fa fa-list" aria-hidden="true"></i> Alle Änderungsprotokolle](https://github.com/treefrogframework/treefrog-framework/blob/master/CHANGELOG.md)


## <i class="fas fa-hand-holding-usd"></i>Unterstütze die Entwicklung mit deiner Spende

Das TreeFrog-Framework ist ein New-BSD-lizenziertes Open-Source-Projekt und kann völlig kostenlos verwendet werden. Allerdings ist der Aufwand, der für die Wartung und Entwicklung neuer Funktionen für das Projekt erforderlich ist, ohne angemessene finanzielle Unterstützung nicht tragbar. Wir nehmen Spenden von Sponsoren und Einzelspendern über die folgenden Methoden entgegen:

- Spende mittels [PayPal <i class="fas fa-external-link-alt"></i>](https://www.paypal.me/aoyamakazuharu)
- werde ein [Sponsor in GitHub](https://github.com/sponsors/treefrogframework)
- Bitcoin-Spendenadresse: [12C69oSYQLJmA4yB5QynEAoppJpUSDdcZZ]({{ site.baseurl }}/assets/images/btc_address.png "Bitcoin-Spendenadresse")

Ich würde mich freuen, wenn Sie sich überlegen würden mit ihrer Spende das TreeFrog-Framework-Projekt zu unterstützen. Danke schön!


## <i class="fa fa-user" aria-hidden="true"></i>Wir suchen ...

- Entwickler, Tester, Übersetzer.

Da diese Website mit [GitHub Pages](https://pages.github.com/) erstellt wurde, können Übersetzungen auch per Pull-Request übermittelt werden.
Besuchen Sie [GitHub](https://github.com/treefrogframework/treefrog-framework){:target="_blank"}. Sie sind herzlich willkommen!


## <i class="fa fa-info-circle" aria-hidden="true"></i> Weiterführende Informationen

[TreeFrog-Forum <i class="fas fa-external-link-alt"></i>](https://groups.google.com/forum/#!forum/treefrogframework){:target="_blank"}

Twitter (Japanisch) [@TreeFrog_ja <i class="fas fa-external-link-alt"></i>](https://twitter.com/TreeFrog_ja){:target="_blank"}

[Docker Images <i class="fas fa-external-link-alt"></i>](https://hub.docker.com/r/treefrogframework/treefrog/){:target="_blank"}

[Benchmarks <i class="fas fa-external-link-alt"></i>](https://www.techempower.com/benchmarks/){:target="_blank"}
20 changes: 20 additions & 0 deletions docs/de/search.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
---
title: Suche
layout: default
---

<link rel="stylesheet" href="{{ site.baseurl }}/assets/css/tipuesearch.css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
<script>
var language = "de" // language setup for tipuesearch_set.js
</script>
<script src="{{ site.baseurl }}/assets/js/tipuesearch_set.js"></script>
<script src="{{ site.baseurl }}/assets/js/tipuesearch.min.js"></script>

<form action="{{ site.baseurl }}/search.html" id="search-form" method="get">
<input type="text" name="q" id="tipue_search_input" class="search-box" placeholder="">
<input type="submit" id="tipue_search_input" class="result-search-button" value="Suche">
</form>

<div id="tipue_search_content"></div>
{% include search_json.html %}
Loading