diff --git a/.cspell.yml b/.cspell.yml
new file mode 100644
index 000000000..1d9219716
--- /dev/null
+++ b/.cspell.yml
@@ -0,0 +1,8 @@
+# cSpell:ignore textlintrc
+# For settings, see
+# https://www.streetsidesoftware.com/vscode-spell-checker/docs/configuration/
+version: '0.2'
+caseSensitive: true
+words:
+ - Docsy
+ - Gin Web Framework
diff --git a/.github/dependabot.yml b/.github/dependabot.yml
index 632e8eb25..573e2f0c3 100644
--- a/.github/dependabot.yml
+++ b/.github/dependabot.yml
@@ -1,10 +1,14 @@
version: 2
updates:
- - package-ecosystem: github-actions
- directory: /
- schedule:
- interval: weekly
- - package-ecosystem: gomod
- directory: /
- schedule:
- interval: weekly
+- package-ecosystem: npm
+ directory: "/"
+ schedule:
+ interval: daily
+ time: '20:00'
+ open-pull-requests-limit: 10
+- package-ecosystem: bundler
+ directory: "/"
+ schedule:
+ interval: daily
+ time: '20:00'
+ open-pull-requests-limit: 10
diff --git a/.github/workflows/node.yml b/.github/workflows/node.yml
deleted file mode 100644
index d1c2b73d7..000000000
--- a/.github/workflows/node.yml
+++ /dev/null
@@ -1,46 +0,0 @@
-name: Run Deploy
-
-on:
- push:
- branches:
- - master
- pull_request:
- branches:
- - master
-
-jobs:
- build:
- runs-on: ubuntu-latest
- strategy:
- matrix:
- node: [ '20' ]
- name: Node ${{ matrix.node }} Setup
- steps:
- - uses: actions/checkout@v4
- - name: Setup node
- uses: actions/setup-node@v4
- with:
- node-version: ${{ matrix.node }}
- - name: Install node module
- run: |
- npm install -D --save autoprefixer
- npm install -D --save postcss-cli
- npm audit fix
-
- - name: Setup Hugo
- uses: peaceiris/actions-hugo@v3
- with:
- hugo-version: '0.125.4'
- extended: true
-
- - name: Build
- run: |
- hugo --minify
- echo 'gin-gonic.com' > public/CNAME
-
- - name: Deploy
- uses: peaceiris/actions-gh-pages@v4
- if: github.ref == 'refs/heads/master'
- with:
- github_token: ${{ secrets.GITHUB_TOKEN }}
- publish_dir: ./public
diff --git a/.gitignore b/.gitignore
index 516d63513..40b67f41a 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,17 +1,5 @@
-# Binaries for programs and plugins
-*.exe
-*.exe~
-*.dll
-*.so
-*.dylib
-
-# Test binary, build with `go test -c`
-*.test
-
-# Output of the go coverage tool, specifically when used with LiteIDE
-*.out
-
-public
-resources
-node_modules
-.hugo_build.lock
+/public
+resources/
+node_modules/
+package-lock.json
+.hugo_build.lock
\ No newline at end of file
diff --git a/.nvmrc b/.nvmrc
new file mode 100644
index 000000000..b009dfb9d
--- /dev/null
+++ b/.nvmrc
@@ -0,0 +1 @@
+lts/*
diff --git a/LICENSE b/LICENSE
index 397ecca79..69756b706 100644
--- a/LICENSE
+++ b/LICENSE
@@ -2,20 +2,19 @@ MIT License
Copyright (c) 2018 Gin-Gonic
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
+Permission is hereby granted, free of charge, to any person obtaining a copy of
+this software and associated documentation files (the "Software"), to deal in
+the Software without restriction, including without limitation the rights to
+use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
+the Software, and to permit persons to whom the Software is furnished to do so,
+subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
+FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
+COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
+IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/README.md b/README.md
index 4a7c3b51e..8ca9d8981 100644
--- a/README.md
+++ b/README.md
@@ -1,19 +1,24 @@
-
# Gin website
[![Run Deploy](https://github.com/gin-gonic/website/actions/workflows/node.yml/badge.svg)](https://github.com/gin-gonic/website/actions/workflows/node.yml)
-Welcome! This repository houses all the assets required to build the Gin website and documentation. We're pleased that you want to contribute! The website is hosted at https://gin-gonic.com.
+Welcome! This repository houses all the assets required to build the Gin website
+and documentation. We're pleased that you want to contribute! The website is
+hosted at https://gin-gonic.com.
-We use [Hugo](https://gohugo.io/) to format and generate our website, the [Docsy](https://github.com/google/docsy) theme for styling and site structure. Thanks!.
+We use [Hugo](https://gohugo.io/) to format and generate our website, the
+[Docsy](https://github.com/google/docsy) theme for styling and site structure.
+Thanks!.
-**Note:** We only support hugo [v0.75.1 version](https://github.com/gohugoio/hugo/releases/tag/v0.75.1).
+**Note:** We only support hugo
+[v0.75.1 version](https://github.com/gohugoio/hugo/releases/tag/v0.75.1).
## Contribution
- Fork the repository
-You can click the Fork button in the upper-right area of the screen to create a copy of this repository in your GitHub account. This copy is called as fork.
+You can click the Fork button in the upper-right area of the screen to create a
+copy of this repository in your GitHub account. This copy is called as fork.
> You need to use the below command to clone code for docsy theme.
@@ -23,15 +28,20 @@ git clone --recurse-submodules --depth 1 https://github.com/google/docsy.git the
- Create one pull request
-Make any changes you want in your fork, and when you are ready to send those changes to us, go to your fork and create a new pull request to let us know about it.
+Make any changes you want in your fork, and when you are ready to send those
+changes to us, go to your fork and create a new pull request to let us know
+about it.
- Merge the pull request
-Once your pull request is created, a Gin reviewer will take responsibility for providing clear, actionable feedback, re-improve and merge.
+Once your pull request is created, a Gin reviewer will take responsibility for
+providing clear, actionable feedback, re-improve and merge.
## Running
-See the [official Hugo documentation](https://gohugo.io/getting-started/installing/) for Hugo installation instructions.
+See the
+[official Hugo documentation](https://gohugo.io/getting-started/installing/) for
+Hugo installation instructions.
To run the site locally when you have Hugo installed:
@@ -43,8 +53,11 @@ $ hugo
$ hugo server
```
-This will start the local Hugo server on port 1313. Open up your browser to http://localhost:1313 to view the site. As you make changes to the source files, Hugo updates the site and forces a browser refresh.
+This will start the local Hugo server on port 1313. Open up your browser to
+http://localhost:1313 to view the site. As you make changes to the source files,
+Hugo updates the site and forces a browser refresh.
## Thanks
-Gin thrives on community participation, and we really appreciate your contributions to our site and our documentation!
+Gin thrives on community participation, and we really appreciate your
+contributions to our site and our documentation!
diff --git a/assets/scss/_variables_project.scss b/assets/scss/_variables_project.scss
index ea30c0e40..256902739 100644
--- a/assets/scss/_variables_project.scss
+++ b/assets/scss/_variables_project.scss
@@ -4,6 +4,3 @@ Add styles or override variables from the theme here.
*/
-$primary: #3176d9 !default;
-$dark: #3176d9 !default;
-
diff --git a/content/en/_index.html b/content/en/_index.html
deleted file mode 100644
index d5a8b9299..000000000
--- a/content/en/_index.html
+++ /dev/null
@@ -1,77 +0,0 @@
-+++
-title = "Gin Web Framework"
-linkTitle = "Gin Web Framework"
-+++
-
-{{< blocks/cover title="Gin Web Framework" image_anchor="top" height="full" color="orange" >}}
-
The fastest full-featured web framework for Go. Crystal clear.
-
- {{< blocks/link-down color="info" >}}
-
-{{< /blocks/cover >}}
-
-
-{{% blocks/lead color="white" %}}
-
-**What is Gin?**
-
-Gin is a web framework written in Golang.
-
-It features a Martini-like API, but with performance up to 40 times faster than Martini.
-
-If you need performance and productivity, you will love Gin.
-
-{{% /blocks/lead %}}
-
-{{< blocks/section color="light" >}}
-
-{{% blocks/feature icon="fa fa-tachometer-alt" title="Fast" %}}
-Radix tree based routing, small memory foot print. No reflection. Predictable API performance.
-{{% /blocks/feature %}}
-
-{{% blocks/feature icon="fa fa-bars" title="Middleware support" %}}
-An incoming HTTP request can be handled by a chain of middleware and the final action.
-For example: Logger, Authorization, GZIP and finally post a message in the DB.
-{{% /blocks/feature %}}
-
-{{% blocks/feature icon="fa fa-life-ring" title="Crash-free" %}}
-Gin can catch a panic occurred during a HTTP request and recover it. This way, your server will be always available. It’s also possible to report this panic to Sentry for example!
-{{% /blocks/feature %}}
-
-{{< /blocks/section >}}
-
-{{< blocks/section color="white" >}}
-
-{{% blocks/feature icon="fa fa-check-circle" title="JSON validation" %}}
-Gin can parse and validate the JSON of a request, checking, for example, the existence of required values.
-{{% /blocks/feature %}}
-
-{{% blocks/feature icon="fa fa-users-cog" title="Routes grouping" %}}
-Organize your routes better. Authorization required vs non required, different API versions. In addition, groups can be nested infinitely without degrading performance.
-{{% /blocks/feature %}}
-
-
-{{% blocks/feature icon="fa fa-briefcase" title="Error management" %}}
-Gin provides a convenient way to collect all the errors occurred during a HTTP request. Eventually, middleware can write them to a log file, to a database and send them through the network.
-{{% /blocks/feature %}}
-
-{{< /blocks/section >}}
-
-{{< blocks/section color="info" >}}
-
-{{% blocks/feature icon="fa fa-images" title="Rendering built-in" %}}
-Gin provides an easy to use API for JSON, XML and HTML rendering.
-{{% /blocks/feature %}}
-
-{{% blocks/feature icon="fa fa-code" title="Extendable" %}}
-Creating new middleware is so easy, just check out the sample code.
-{{% /blocks/feature %}}
-
-{{< /blocks/section >}}
diff --git a/content/en/_index.md b/content/en/_index.md
new file mode 100644
index 000000000..45fd10398
--- /dev/null
+++ b/content/en/_index.md
@@ -0,0 +1,91 @@
+---
+title: Gin Web Framework
+linkTitle: Gin Web Framework
+---
+
+{{< blocks/cover title="Gin Web Framework" image_anchor="top" height="full" >}}
+ Learn More
+
+
+Download
+
+
The fastest full-featured web framework for Go. Crystal clear.
+
+{{< blocks/link-down color="info" >}} {{< /blocks/cover >}}
+
+{{% blocks/lead color="white" %}}
+
+**What is Gin?**
+
+Gin is a web framework written in Golang. It features a Martini-like API, but
+with performance up to 40 times faster than Martini. If you need performance and
+productivity, you will love Gin.
+
+{{% /blocks/lead %}}
+
+{{% blocks/section color="light" type="row" %}}
+{{% blocks/feature icon="fa-tachometer-alt" title="Fast" %}}
+
+Radix tree based routing, small memory foot print. No reflection. Predictable
+API performance.
+
+{{% /blocks/feature %}}
+
+{{% blocks/feature icon="fa-bars" title="Middleware support"%}}
+
+An incoming HTTP request can be handled by a chain of middleware and the final
+action. For example: Logger, Authorization, GZIP and finally post a message in
+the DB.
+
+{{% /blocks/feature %}}
+
+{{% blocks/feature icon="fa-life-ring" title="Crash-free" %}}
+
+Gin can catch a panic occurred during a HTTP request and recover it. This way,
+your server will be always available. It’s also possible to report this panic to
+Sentry for example! {{% /blocks/feature %}}
+
+{{% /blocks/section %}}
+
+{{% blocks/section color="white" type="row" %}}
+
+{{% blocks/feature icon="fa-check-circle" title="JSON validation" %}}
+
+Gin can parse and validate the JSON of a request, checking, for example, the
+existence of required values.
+
+{{% /blocks/feature %}}
+
+{{% blocks/feature icon="fa-users-cog" title="Routes grouping"%}}
+
+Organize your routes better. Authorization required vs non required, different
+API versions. In addition, groups can be nested infinitely without degrading
+performance.
+
+{{% /blocks/feature %}}
+
+{{% blocks/feature icon="fa-briefcase" title="Error management" %}}
+
+Gin provides a convenient way to collect all the errors occurred during a HTTP
+request. Eventually, middleware can write them to a log file, to a database and
+send them through the network.
+
+{{% /blocks/feature %}}
+
+{{% /blocks/section %}}
+
+{{% blocks/section color="info" type="row" %}}
+
+{{% blocks/feature icon="fa-images" title="Rendering built-in" %}}
+
+Gin provides an easy to use API for JSON, XML and HTML rendering.
+
+{{% /blocks/feature %}}
+
+{{% blocks/feature icon="fa-code" title="Extendable"%}}
+
+Creating new middleware is so easy, just check out the sample code.
+
+{{% /blocks/feature %}}
+
+{{% /blocks/section %}}
diff --git a/content/en/blog/_index.md b/content/en/blog/_index.md
index bfe08e93d..13fbd0522 100644
--- a/content/en/blog/_index.md
+++ b/content/en/blog/_index.md
@@ -1,13 +1,9 @@
---
-title: "Blog"
-linkTitle: "Blog"
-menu:
- main:
- weight: 30
+title: Blog
+menu: { main: { weight: 30 } }
+linkTitle: Blog
---
-
This is the **blog** section. It has two categories: News and Releases.
Files in these directories will be listed in reverse chronological order.
-
diff --git a/content/en/blog/news/_index.md b/content/en/blog/news/_index.md
index 6d6f3ad0a..c609aa254 100644
--- a/content/en/blog/news/_index.md
+++ b/content/en/blog/news/_index.md
@@ -1,8 +1,4 @@
-
---
-title: "News"
-linkTitle: "News"
+title: News
weight: 20
---
-
-
diff --git a/content/en/blog/news/how-to-build-one-effective-middleware.md b/content/en/blog/news/how-to-build-one-effective-middleware.md
index d93e7cbc3..497dc1f5c 100644
--- a/content/en/blog/news/how-to-build-one-effective-middleware.md
+++ b/content/en/blog/news/how-to-build-one-effective-middleware.md
@@ -1,6 +1,6 @@
---
-title: "How to build one effective middleware?"
-linkTitle: "How to build one effective middleware?"
+title: How to build one effective middleware?
+linkTitle: How to build one effective middleware?
date: 2019-02-26
---
@@ -8,9 +8,14 @@ date: 2019-02-26
The middleware has two parts:
- - part one is what is executed once, when you initialize your middleware. That's where you set up all the global objects, logicals etc. Everything that happens once per application lifetime.
+- part one is what is executed once, when you initialize your middleware. That's
+ where you set up all the global objects, logicals etc. Everything that happens
+ once per application lifetime.
- - part two is what executes on every request. For example, a database middleware you simply inject your "global" database object into the context. Once it's inside the context, you can retrieve it from within other middlewares and your handler function.
+- part two is what executes on every request. For example, a database middleware
+ you simply inject your "global" database object into the context. Once it's
+ inside the context, you can retrieve it from within other middlewares and your
+ handler function.
```go
func funcName(params string) gin.HandlerFunc {
@@ -28,7 +33,7 @@ func funcName(params string) gin.HandlerFunc {
// --->
// The following code is an example
c.Set("TestVar", params)
- c.Next()
+ c.Next()
}
}
```
@@ -84,7 +89,9 @@ func mid2() gin.HandlerFunc {
}
```
-According to [Constituent parts](#Constituent-parts) said, when we run the gin process, **part one** will execute firstly and will print the following information:
+According to [Constituent parts](#Constituent-parts) said, when we run the gin
+process, **part one** will execute firstly and will print the following
+information:
```go
globalMiddleware...1
@@ -104,7 +111,8 @@ mid1...1
mid2...1
```
-When we curl one request `curl -v localhost:8080/rest/n/api/some`, **part two** will execute their middleware and output the following information:
+When we curl one request `curl -v localhost:8080/rest/n/api/some`, **part two**
+will execute their middleware and output the following information:
```go
globalMiddleware...2
@@ -139,5 +147,3 @@ mid1...3
v
globalMiddleware...3
```
-
-
diff --git a/content/en/blog/releases/_index.md b/content/en/blog/releases/_index.md
index 2e7b975d9..e0862723a 100644
--- a/content/en/blog/releases/_index.md
+++ b/content/en/blog/releases/_index.md
@@ -1,8 +1,5 @@
-
---
-title: "Releases"
-linkTitle: "Releases"
+title: Releases
+linkTitle: Releases
weight: 20
---
-
-
diff --git a/content/en/blog/releases/release13.md b/content/en/blog/releases/release13.md
index 43f4656f4..9322d3776 100644
--- a/content/en/blog/releases/release13.md
+++ b/content/en/blog/releases/release13.md
@@ -1,29 +1,70 @@
---
-title: "Gin 1.3.0 is released"
-linkTitle: "Gin 1.3.0 is released"
+title: Gin 1.3.0 is released
+linkTitle: Gin 1.3.0 is released
date: 2018-08-14
---
### CHANGELOG
-- [NEW] Add [`func (*Context) QueryMap`](https://pkg.go.dev/github.com/gin-gonic/gin#Context.QueryMap), [`func (*Context) GetQueryMap`](https://pkg.go.dev/github.com/gin-gonic/gin#Context.GetQueryMap), [`func (*Context) PostFormMap`](https://pkg.go.dev/github.com/gin-gonic/gin#Context.PostFormMap) and [`func (*Context) GetPostFormMap`](https://pkg.go.dev/github.com/gin-gonic/gin#Context.GetPostFormMap) to support `type map[string]string` as query string or form parameters, see [#1383](https://github.com/gin-gonic/gin/pull/1383)
-- [NEW] Add [`func (*Context) AsciiJSON`](https://pkg.go.dev/github.com/gin-gonic/gin#Context.AsciiJSON), see [#1358](https://github.com/gin-gonic/gin/pull/1358)
-- [NEW] Add `Pusher()` in [`type ResponseWriter`](https://pkg.go.dev/github.com/gin-gonic/gin#ResponseWriter) for supporting http2 push, see [#1273](https://github.com/gin-gonic/gin/pull/1273)
-- [NEW] Add [`func (*Context) DataFromReader`](https://pkg.go.dev/github.com/gin-gonic/gin#Context.DataFromReader) for serving dynamic data, see [#1304](https://github.com/gin-gonic/gin/pull/1304)
-- [NEW] Add [`func (*Context) ShouldBindBodyWith`](https://pkg.go.dev/github.com/gin-gonic/gin#Context.ShouldBindBodyWith) allowing to call binding multiple times, see [#1341](https://github.com/gin-gonic/gin/pull/1341)
-- [NEW] Support pointers in form binding, see [#1336](https://github.com/gin-gonic/gin/pull/1336)
-- [NEW] Add [`func (*Context) JSONP`](https://pkg.go.dev/github.com/gin-gonic/gin#Context.JSONP), see [#1333](https://github.com/gin-gonic/gin/pull/1333)
-- [NEW] Support default value in form binding, see [#1138](https://github.com/gin-gonic/gin/pull/1138)
-- [NEW] Expose validator engine in [`type StructValidator`](https://pkg.go.dev/github.com/gin-gonic/gin/binding#StructValidator), see [#1277](https://github.com/gin-gonic/gin/pull/1277)
-- [NEW] Add [`func (*Context) ShouldBind`](https://pkg.go.dev/github.com/gin-gonic/gin#Context.ShouldBind), [`func (*Context) ShouldBindQuery`](https://pkg.go.dev/github.com/gin-gonic/gin#Context.ShouldBindQuery) and [`func (*Context) ShouldBindJSON`](https://pkg.go.dev/github.com/gin-gonic/gin#Context.ShouldBindJSON), see [#1047](https://github.com/gin-gonic/gin/pull/1047)
-- [NEW] Add support for `time.Time` location in form binding, see [#1117](https://github.com/gin-gonic/gin/pull/1117)
-- [NEW] Add [`func (*Context) BindQuery`](https://pkg.go.dev/github.com/gin-gonic/gin#Context.BindQuery), see [#1029](https://github.com/gin-gonic/gin/pull/1029)
-- [NEW] Make [jsonite](https://github.com/json-iterator/go) optional with build tags, see [#1026](https://github.com/gin-gonic/gin/pull/1026)
-- [NEW] Show query string in logger, see [#999](https://github.com/gin-gonic/gin/pull/999)
-- [NEW] Add [`func (*Context) SecureJSON`](https://pkg.go.dev/github.com/gin-gonic/gin#Context.SecureJSON), see [#987](https://github.com/gin-gonic/gin/pull/987) and [#993](https://github.com/gin-gonic/gin/pull/993)
-- [DEPRECATE] `func (*Context) GetCookie` for [`func (*Context) Cookie`](https://pkg.go.dev/github.com/gin-gonic/gin#Context.Cookie)
-- [FIX] Don't display color tags if [`func DisableConsoleColor`](https://pkg.go.dev/github.com/gin-gonic/gin#DisableConsoleColor) called, see [#1072](https://github.com/gin-gonic/gin/pull/1072)
-- [FIX] Gin Mode `""` when calling [`func Mode`](https://pkg.go.dev/github.com/gin-gonic/gin#Mode) now returns `const DebugMode`, see [#1250](https://github.com/gin-gonic/gin/pull/1250)
-- [FIX] `Flush()` now doesn't overwrite `responseWriter` status code, see [#1460](https://github.com/gin-gonic/gin/pull/1460)
-
-
+- [NEW] Add
+ [`func (*Context) QueryMap`](https://pkg.go.dev/github.com/gin-gonic/gin#Context.QueryMap),
+ [`func (*Context) GetQueryMap`](https://pkg.go.dev/github.com/gin-gonic/gin#Context.GetQueryMap),
+ [`func (*Context) PostFormMap`](https://pkg.go.dev/github.com/gin-gonic/gin#Context.PostFormMap)
+ and
+ [`func (*Context) GetPostFormMap`](https://pkg.go.dev/github.com/gin-gonic/gin#Context.GetPostFormMap)
+ to support `type map[string]string` as query string or form parameters, see
+ [#1383](https://github.com/gin-gonic/gin/pull/1383)
+- [NEW] Add
+ [`func (*Context) AsciiJSON`](https://pkg.go.dev/github.com/gin-gonic/gin#Context.AsciiJSON),
+ see [#1358](https://github.com/gin-gonic/gin/pull/1358)
+- [NEW] Add `Pusher()` in
+ [`type ResponseWriter`](https://pkg.go.dev/github.com/gin-gonic/gin#ResponseWriter)
+ for supporting http2 push, see
+ [#1273](https://github.com/gin-gonic/gin/pull/1273)
+- [NEW] Add
+ [`func (*Context) DataFromReader`](https://pkg.go.dev/github.com/gin-gonic/gin#Context.DataFromReader)
+ for serving dynamic data, see
+ [#1304](https://github.com/gin-gonic/gin/pull/1304)
+- [NEW] Add
+ [`func (*Context) ShouldBindBodyWith`](https://pkg.go.dev/github.com/gin-gonic/gin#Context.ShouldBindBodyWith)
+ allowing to call binding multiple times, see
+ [#1341](https://github.com/gin-gonic/gin/pull/1341)
+- [NEW] Support pointers in form binding, see
+ [#1336](https://github.com/gin-gonic/gin/pull/1336)
+- [NEW] Add
+ [`func (*Context) JSONP`](https://pkg.go.dev/github.com/gin-gonic/gin#Context.JSONP),
+ see [#1333](https://github.com/gin-gonic/gin/pull/1333)
+- [NEW] Support default value in form binding, see
+ [#1138](https://github.com/gin-gonic/gin/pull/1138)
+- [NEW] Expose validator engine in
+ [`type StructValidator`](https://pkg.go.dev/github.com/gin-gonic/gin/binding#StructValidator),
+ see [#1277](https://github.com/gin-gonic/gin/pull/1277)
+- [NEW] Add
+ [`func (*Context) ShouldBind`](https://pkg.go.dev/github.com/gin-gonic/gin#Context.ShouldBind),
+ [`func (*Context) ShouldBindQuery`](https://pkg.go.dev/github.com/gin-gonic/gin#Context.ShouldBindQuery)
+ and
+ [`func (*Context) ShouldBindJSON`](https://pkg.go.dev/github.com/gin-gonic/gin#Context.ShouldBindJSON),
+ see [#1047](https://github.com/gin-gonic/gin/pull/1047)
+- [NEW] Add support for `time.Time` location in form binding, see
+ [#1117](https://github.com/gin-gonic/gin/pull/1117)
+- [NEW] Add
+ [`func (*Context) BindQuery`](https://pkg.go.dev/github.com/gin-gonic/gin#Context.BindQuery),
+ see [#1029](https://github.com/gin-gonic/gin/pull/1029)
+- [NEW] Make [jsonite](https://github.com/json-iterator/go) optional with build
+ tags, see [#1026](https://github.com/gin-gonic/gin/pull/1026)
+- [NEW] Show query string in logger, see
+ [#999](https://github.com/gin-gonic/gin/pull/999)
+- [NEW] Add
+ [`func (*Context) SecureJSON`](https://pkg.go.dev/github.com/gin-gonic/gin#Context.SecureJSON),
+ see [#987](https://github.com/gin-gonic/gin/pull/987) and
+ [#993](https://github.com/gin-gonic/gin/pull/993)
+- [DEPRECATE] `func (*Context) GetCookie` for
+ [`func (*Context) Cookie`](https://pkg.go.dev/github.com/gin-gonic/gin#Context.Cookie)
+- [FIX] Don't display color tags if
+ [`func DisableConsoleColor`](https://pkg.go.dev/github.com/gin-gonic/gin#DisableConsoleColor)
+ called, see [#1072](https://github.com/gin-gonic/gin/pull/1072)
+- [FIX] Gin Mode `""` when calling
+ [`func Mode`](https://pkg.go.dev/github.com/gin-gonic/gin#Mode) now returns
+ `const DebugMode`, see [#1250](https://github.com/gin-gonic/gin/pull/1250)
+- [FIX] `Flush()` now doesn't overwrite `responseWriter` status code, see
+ [#1460](https://github.com/gin-gonic/gin/pull/1460)
diff --git a/content/en/blog/releases/release14.md b/content/en/blog/releases/release14.md
index 23fd64829..46804251a 100644
--- a/content/en/blog/releases/release14.md
+++ b/content/en/blog/releases/release14.md
@@ -1,6 +1,6 @@
---
-title: "Gin 1.4.0 is released"
-linkTitle: "Gin 1.4.0 is released"
+title: Gin 1.4.0 is released
+linkTitle: Gin 1.4.0 is released
date: 2019-05-08
---
@@ -8,59 +8,114 @@ date: 2019-05-08
#### Feature
-- [NEW] Support for [Go Modules](https://github.com/golang/go/wiki/Modules) [#1569](https://github.com/gin-gonic/gin/pull/1569)
-- [NEW] Refactor of form mapping multipart request [#1829](https://github.com/gin-gonic/gin/pull/1829)
-- [NEW] Supporting file binding [#1264](https://github.com/gin-gonic/gin/pull/1264)
-- [NEW] Add support for mapping arrays [#1797](https://github.com/gin-gonic/gin/pull/1797)
-- [NEW] Make context.Keys available as LogFormatterParams [#1779](https://github.com/gin-gonic/gin/pull/1779)
-- [NEW] Use internal/json for Marshal/Unmarshal [#1791](https://github.com/gin-gonic/gin/pull/1791)
-- [NEW] Support mapping time.Duration [#1794](https://github.com/gin-gonic/gin/pull/1794)
-- [NEW] Refactor form mappings [#1749](https://github.com/gin-gonic/gin/pull/1749)
-- [NEW] Added flag to context.Stream indicates if client disconnected in middle of stream [#1252](https://github.com/gin-gonic/gin/pull/1252)
-- [NEW] Extend context.File to allow for the content-dispositon attachments via a new method context.Attachment [#1260](https://github.com/gin-gonic/gin/pull/1260)
-- [NEW] Add prefix from X-Forwarded-Prefix in redirectTrailingSlash [#1238](https://github.com/gin-gonic/gin/pull/1238)
-- [NEW] Add context.HandlerNames() [#1729](https://github.com/gin-gonic/gin/pull/1729)
-- [NEW] Add response size to LogFormatterParams [#1752](https://github.com/gin-gonic/gin/pull/1752)
-- [NEW] Allow ignoring field on form mapping [#1733](https://github.com/gin-gonic/gin/pull/1733)
-- [NEW] Add a function to force color in console output. [#1724](https://github.com/gin-gonic/gin/pull/1724)
-- [NEW] Binding for URL Params [#1694](https://github.com/gin-gonic/gin/pull/1694)
-- [NEW] Add LoggerWithFormatter method [#1677](https://github.com/gin-gonic/gin/pull/1677)
-- [NEW] RunFd method to run http.Server through a file descriptor [#1609](https://github.com/gin-gonic/gin/pull/1609)
+- [NEW] Support for [Go Modules](https://github.com/golang/go/wiki/Modules)
+ [#1569](https://github.com/gin-gonic/gin/pull/1569)
+- [NEW] Refactor of form mapping multipart request
+ [#1829](https://github.com/gin-gonic/gin/pull/1829)
+- [NEW] Supporting file binding
+ [#1264](https://github.com/gin-gonic/gin/pull/1264)
+- [NEW] Add support for mapping arrays
+ [#1797](https://github.com/gin-gonic/gin/pull/1797)
+- [NEW] Make context.Keys available as LogFormatterParams
+ [#1779](https://github.com/gin-gonic/gin/pull/1779)
+- [NEW] Use internal/json for Marshal/Unmarshal
+ [#1791](https://github.com/gin-gonic/gin/pull/1791)
+- [NEW] Support mapping time.Duration
+ [#1794](https://github.com/gin-gonic/gin/pull/1794)
+- [NEW] Refactor form mappings
+ [#1749](https://github.com/gin-gonic/gin/pull/1749)
+- [NEW] Added flag to context.Stream indicates if client disconnected in middle
+ of stream [#1252](https://github.com/gin-gonic/gin/pull/1252)
+- [NEW] Extend context.File to allow for the content-dispositon attachments via
+ a new method context.Attachment
+ [#1260](https://github.com/gin-gonic/gin/pull/1260)
+- [NEW] Add prefix from X-Forwarded-Prefix in redirectTrailingSlash
+ [#1238](https://github.com/gin-gonic/gin/pull/1238)
+- [NEW] Add context.HandlerNames()
+ [#1729](https://github.com/gin-gonic/gin/pull/1729)
+- [NEW] Add response size to LogFormatterParams
+ [#1752](https://github.com/gin-gonic/gin/pull/1752)
+- [NEW] Allow ignoring field on form mapping
+ [#1733](https://github.com/gin-gonic/gin/pull/1733)
+- [NEW] Add a function to force color in console output.
+ [#1724](https://github.com/gin-gonic/gin/pull/1724)
+- [NEW] Binding for URL Params
+ [#1694](https://github.com/gin-gonic/gin/pull/1694)
+- [NEW] Add LoggerWithFormatter method
+ [#1677](https://github.com/gin-gonic/gin/pull/1677)
+- [NEW] RunFd method to run http.Server through a file descriptor
+ [#1609](https://github.com/gin-gonic/gin/pull/1609)
- [NEW] Yaml binding support [#1618](https://github.com/gin-gonic/gin/pull/1618)
- [NEW] Add PureJSON renderer [#694](https://github.com/gin-gonic/gin/pull/694)
-- [NEW] Set default time format in form binding [#1487](https://github.com/gin-gonic/gin/pull/1487)
-- [NEW] Upgrade dependency libraries [#1491](https://github.com/gin-gonic/gin/pull/1491)
+- [NEW] Set default time format in form binding
+ [#1487](https://github.com/gin-gonic/gin/pull/1487)
+- [NEW] Upgrade dependency libraries
+ [#1491](https://github.com/gin-gonic/gin/pull/1491)
#### Bug fix
-- [FIX] Truncate Latency precision in long running request [#1830](https://github.com/gin-gonic/gin/pull/1830)
-- [FIX] IsTerm flag should not be affected by DisableConsoleColor method. [#1802](https://github.com/gin-gonic/gin/pull/1802)
-- [FIX] Readme updates [#1793](https://github.com/gin-gonic/gin/pull/1793) [#1788](https://github.com/gin-gonic/gin/pull/1788) [1789](https://github.com/gin-gonic/gin/pull/1789)
-- [FIX] StaticFS: Fixed Logging two log lines on 404. [#1805](https://github.com/gin-gonic/gin/pull/1805), [#1804](https://github.com/gin-gonic/gin/pull/1804)
-- [FIX] Moved [examples](https://github.com/gin-gonic/examples) to stand alone Repo [#1775](https://github.com/gin-gonic/gin/pull/1775)
-- [FIX] Support HTTP content negotiation wildcards [#1112](https://github.com/gin-gonic/gin/pull/1112)
-- [FIX] Pass MaxMultipartMemory when FormFile is called [#1600](https://github.com/gin-gonic/gin/pull/1600)
-- [FIX] LoadHTML* tests [#1559](https://github.com/gin-gonic/gin/pull/1559)
-- [FIX] Removed use of sync.pool from HandleContext [#1565](https://github.com/gin-gonic/gin/pull/1565)
-- [FIX] Format output log to os.Stderr [#1571](https://github.com/gin-gonic/gin/pull/1571)
-- [FIX] Make logger use a yellow background and a darkgray text for legibility [#1570](https://github.com/gin-gonic/gin/pull/1570)
-- [FIX] Remove sensitive request information from panic log. [#1370](https://github.com/gin-gonic/gin/pull/1370)
-- [FIX] log.Println() does not print timestamp [#829](https://github.com/gin-gonic/gin/pull/829) [#1560](https://github.com/gin-gonic/gin/pull/1560)
-- [FIX] Add missing copyright and update if/else [#1497](https://github.com/gin-gonic/gin/pull/1497)
+- [FIX] Truncate Latency precision in long running request
+ [#1830](https://github.com/gin-gonic/gin/pull/1830)
+- [FIX] IsTerm flag should not be affected by DisableConsoleColor method.
+ [#1802](https://github.com/gin-gonic/gin/pull/1802)
+- [FIX] Readme updates [#1793](https://github.com/gin-gonic/gin/pull/1793)
+ [#1788](https://github.com/gin-gonic/gin/pull/1788)
+ [1789](https://github.com/gin-gonic/gin/pull/1789)
+- [FIX] StaticFS: Fixed Logging two log lines on 404.
+ [#1805](https://github.com/gin-gonic/gin/pull/1805),
+ [#1804](https://github.com/gin-gonic/gin/pull/1804)
+- [FIX] Moved [examples](https://github.com/gin-gonic/examples) to stand alone
+ Repo [#1775](https://github.com/gin-gonic/gin/pull/1775)
+- [FIX] Support HTTP content negotiation wildcards
+ [#1112](https://github.com/gin-gonic/gin/pull/1112)
+- [FIX] Pass MaxMultipartMemory when FormFile is called
+ [#1600](https://github.com/gin-gonic/gin/pull/1600)
+- [FIX] LoadHTML\* tests [#1559](https://github.com/gin-gonic/gin/pull/1559)
+- [FIX] Removed use of sync.pool from HandleContext
+ [#1565](https://github.com/gin-gonic/gin/pull/1565)
+- [FIX] Format output log to os.Stderr
+ [#1571](https://github.com/gin-gonic/gin/pull/1571)
+- [FIX] Make logger use a yellow background and a darkgray text for legibility
+ [#1570](https://github.com/gin-gonic/gin/pull/1570)
+- [FIX] Remove sensitive request information from panic log.
+ [#1370](https://github.com/gin-gonic/gin/pull/1370)
+- [FIX] log.Println() does not print timestamp
+ [#829](https://github.com/gin-gonic/gin/pull/829)
+ [#1560](https://github.com/gin-gonic/gin/pull/1560)
+- [FIX] Add missing copyright and update if/else
+ [#1497](https://github.com/gin-gonic/gin/pull/1497)
- [FIX] Update msgpack usage [#1498](https://github.com/gin-gonic/gin/pull/1498)
-- [FIX] Use protobuf on render [#1496](https://github.com/gin-gonic/gin/pull/1496)
-- [FIX] Add support for Protobuf format response [#1479](https://github.com/gin-gonic/gin/pull/1479)
-- [FIX] Add BindXML and ShouldBindXML [#1485](https://github.com/gin-gonic/gin/pull/1485)
-- [FIX] CI testing updates [#1671](https://github.com/gin-gonic/gin/pull/1671) [#1670](https://github.com/gin-gonic/gin/pull/1670) [#1682](https://github.com/gin-gonic/gin/pull/1682) [#1669](https://github.com/gin-gonic/gin/pull/1669)
-- [FIX] StaticFS(): Send 404 when path does not exist [#1663](https://github.com/gin-gonic/gin/pull/1663)
-- [FIX] Handle nil body for JSON binding [#1638](https://github.com/gin-gonic/gin/pull/1638)
-- [FIX] Support bind uri param [#1612](https://github.com/gin-gonic/gin/pull/1612)
-- [FIX] recovery: fix issue with syscall import on google app engine [#1640](https://github.com/gin-gonic/gin/pull/1640)
-- [FIX] Make sure the debug log contains line breaks [#1650](https://github.com/gin-gonic/gin/pull/1650)
-- [FIX] Panic stack trace being printed during recovery of broken pipe [#1089](https://github.com/gin-gonic/gin/pull/1089) [#1259](https://github.com/gin-gonic/gin/pull/1259)
-- [FIX] Context.Next() - recheck len of handlers on every iteration. [#1745](https://github.com/gin-gonic/gin/pull/1745)
-- [FIX] Fix all errcheck warnings [#1739](https://github.com/gin-gonic/gin/pull/1739) [#1653](https://github.com/gin-gonic/gin/pull/1653)
-- [FIX] Change color methods to public in the defaultLogger. [#1771](https://github.com/gin-gonic/gin/pull/1771)
-- [FIX] Update writeHeaders method to use http.Header.Set [#1722](https://github.com/gin-gonic/gin/pull/1722)
-- [FIX] context.Copy() race condition [#1020](https://github.com/gin-gonic/gin/pull/1020)
-
+- [FIX] Use protobuf on render
+ [#1496](https://github.com/gin-gonic/gin/pull/1496)
+- [FIX] Add support for Protobuf format response
+ [#1479](https://github.com/gin-gonic/gin/pull/1479)
+- [FIX] Add BindXML and ShouldBindXML
+ [#1485](https://github.com/gin-gonic/gin/pull/1485)
+- [FIX] CI testing updates [#1671](https://github.com/gin-gonic/gin/pull/1671)
+ [#1670](https://github.com/gin-gonic/gin/pull/1670)
+ [#1682](https://github.com/gin-gonic/gin/pull/1682)
+ [#1669](https://github.com/gin-gonic/gin/pull/1669)
+- [FIX] StaticFS(): Send 404 when path does not exist
+ [#1663](https://github.com/gin-gonic/gin/pull/1663)
+- [FIX] Handle nil body for JSON binding
+ [#1638](https://github.com/gin-gonic/gin/pull/1638)
+- [FIX] Support bind uri param
+ [#1612](https://github.com/gin-gonic/gin/pull/1612)
+- [FIX] recovery: fix issue with syscall import on google app engine
+ [#1640](https://github.com/gin-gonic/gin/pull/1640)
+- [FIX] Make sure the debug log contains line breaks
+ [#1650](https://github.com/gin-gonic/gin/pull/1650)
+- [FIX] Panic stack trace being printed during recovery of broken pipe
+ [#1089](https://github.com/gin-gonic/gin/pull/1089)
+ [#1259](https://github.com/gin-gonic/gin/pull/1259)
+- [FIX] Context.Next() - recheck len of handlers on every iteration.
+ [#1745](https://github.com/gin-gonic/gin/pull/1745)
+- [FIX] Fix all errcheck warnings
+ [#1739](https://github.com/gin-gonic/gin/pull/1739)
+ [#1653](https://github.com/gin-gonic/gin/pull/1653)
+- [FIX] Change color methods to public in the defaultLogger.
+ [#1771](https://github.com/gin-gonic/gin/pull/1771)
+- [FIX] Update writeHeaders method to use http.Header.Set
+ [#1722](https://github.com/gin-gonic/gin/pull/1722)
+- [FIX] context.Copy() race condition
+ [#1020](https://github.com/gin-gonic/gin/pull/1020)
diff --git a/content/en/blog/releases/release15.md b/content/en/blog/releases/release15.md
index e4593b3ce..6ff52721e 100644
--- a/content/en/blog/releases/release15.md
+++ b/content/en/blog/releases/release15.md
@@ -1,6 +1,6 @@
---
-title: "Gin 1.5.0 is released"
-linkTitle: "Gin 1.5.0 is released"
+title: Gin 1.5.0 is released
+linkTitle: Gin 1.5.0 is released
date: 2019-11-28
---
@@ -8,40 +8,71 @@ date: 2019-11-28
#### Feature
-- [NEW] Now you can parse the inline lowercase start structure [#1893](https://github.com/gin-gonic/gin/pull/1893)
-- [NEW] **[Break-Backward]** Hold matched route full path in the Context [#1826](https://github.com/gin-gonic/gin/pull/1826)
-- [NEW] Add context param query cache [#1450](https://github.com/gin-gonic/gin/pull/1450)
-- [NEW] Add support of multipart multi files [#1949](https://github.com/gin-gonic/gin/pull/1949)
-- [NEW] Support bind http header param [#1957](https://github.com/gin-gonic/gin/pull/1957)
-- [NEW] Support bind unix time [#1980](https://github.com/gin-gonic/gin/pull/1980)
-- [NEW] Support negative Content-Length in DataFromReader [#1981](https://github.com/gin-gonic/gin/pull/1981)
-- [NEW] Add DisallowUnknownFields() in gin.Context.BindJSON() [#2028](https://github.com/gin-gonic/gin/pull/2028)
-- [NEW] Use specific `net.Listener` with Engine.RunListener() [#2023](https://github.com/gin-gonic/gin/pull/2023)
+- [NEW] Now you can parse the inline lowercase start structure
+ [#1893](https://github.com/gin-gonic/gin/pull/1893)
+- [NEW] **[Break-Backward]** Hold matched route full path in the Context
+ [#1826](https://github.com/gin-gonic/gin/pull/1826)
+- [NEW] Add context param query cache
+ [#1450](https://github.com/gin-gonic/gin/pull/1450)
+- [NEW] Add support of multipart multi files
+ [#1949](https://github.com/gin-gonic/gin/pull/1949)
+- [NEW] Support bind http header param
+ [#1957](https://github.com/gin-gonic/gin/pull/1957)
+- [NEW] Support bind unix time
+ [#1980](https://github.com/gin-gonic/gin/pull/1980)
+- [NEW] Support negative Content-Length in DataFromReader
+ [#1981](https://github.com/gin-gonic/gin/pull/1981)
+- [NEW] Add DisallowUnknownFields() in gin.Context.BindJSON()
+ [#2028](https://github.com/gin-gonic/gin/pull/2028)
+- [NEW] Use specific `net.Listener` with Engine.RunListener()
+ [#2023](https://github.com/gin-gonic/gin/pull/2023)
#### Bug fix
-- [FIX] Use DefaultWriter and DefaultErrorWriter for debug messages [#1891](https://github.com/gin-gonic/gin/pull/1891)
-- [FIX] Some code improvements [#1909](https://github.com/gin-gonic/gin/pull/1909)
-- [FIX] Use encode replace json marshal increase json encoder speed [#1546](https://github.com/gin-gonic/gin/pull/1546)
-- [FIX] Fix context.Params race condition on Copy() [#1841](https://github.com/gin-gonic/gin/pull/1841)
-- [FIX] Improve GetQueryMap performance [#1918](https://github.com/gin-gonic/gin/pull/1918)
-- [FIX] Improve get post data [#1920](https://github.com/gin-gonic/gin/pull/1920)
-- [FIX] Use context instead of x/net/context [#1922](https://github.com/gin-gonic/gin/pull/1922)
-- [FIX] Attempt to fix PostForm cache bug [#1931](https://github.com/gin-gonic/gin/pull/1931)
-- [FIX] **[Break-Backward]** Drop support for go1.8 and go1.9 [#1933](https://github.com/gin-gonic/gin/pull/1933)
-- [FIX] Bugfix for the FullPath feature [#1919](https://github.com/gin-gonic/gin/pull/1919)
-- [FIX] Gin1.5 bytes.Buffer to strings.Builder [#1939](https://github.com/gin-gonic/gin/pull/1939)
-- [FIX] Upgrade github.com/ugorji/go/codec [#1969](https://github.com/gin-gonic/gin/pull/1969)
+- [FIX] Use DefaultWriter and DefaultErrorWriter for debug messages
+ [#1891](https://github.com/gin-gonic/gin/pull/1891)
+- [FIX] Some code improvements
+ [#1909](https://github.com/gin-gonic/gin/pull/1909)
+- [FIX] Use encode replace json marshal increase json encoder speed
+ [#1546](https://github.com/gin-gonic/gin/pull/1546)
+- [FIX] Fix context.Params race condition on Copy()
+ [#1841](https://github.com/gin-gonic/gin/pull/1841)
+- [FIX] Improve GetQueryMap performance
+ [#1918](https://github.com/gin-gonic/gin/pull/1918)
+- [FIX] Improve get post data
+ [#1920](https://github.com/gin-gonic/gin/pull/1920)
+- [FIX] Use context instead of x/net/context
+ [#1922](https://github.com/gin-gonic/gin/pull/1922)
+- [FIX] Attempt to fix PostForm cache bug
+ [#1931](https://github.com/gin-gonic/gin/pull/1931)
+- [FIX] **[Break-Backward]** Drop support for go1.8 and go1.9
+ [#1933](https://github.com/gin-gonic/gin/pull/1933)
+- [FIX] Bugfix for the FullPath feature
+ [#1919](https://github.com/gin-gonic/gin/pull/1919)
+- [FIX] Gin1.5 bytes.Buffer to strings.Builder
+ [#1939](https://github.com/gin-gonic/gin/pull/1939)
+- [FIX] Upgrade github.com/ugorji/go/codec
+ [#1969](https://github.com/gin-gonic/gin/pull/1969)
- [FIX] Simplify code [#2004](https://github.com/gin-gonic/gin/pull/2004)
-- [FIX] Identify terminal on a RISC-V architecture for auto-colored logs [#2019](https://github.com/gin-gonic/gin/pull/2019)
-- [FIX] **[Break-Backward]** Context.JSONP() now expects a semicolon (;) at the end [#2007](https://github.com/gin-gonic/gin/pull/2007)
-- [FIX] **[Break-Backward]** Upgrade validator version to v9 [#1015](https://github.com/gin-gonic/gin/pull/1015)
-- [FIX] Fix some typo [#2079](https://github.com/gin-gonic/gin/pull/2079) [#2080](https://github.com/gin-gonic/gin/pull/2080)
-- [FIX] Relocate binding body tests [#2086](https://github.com/gin-gonic/gin/pull/2086)
-- [FIX] Use Writer in Context.Status [#1606](https://github.com/gin-gonic/gin/pull/1606)
-- [FIX] `Engine.RunUnix()` now returns the error if it can't change the file mode [#2093](https://github.com/gin-gonic/gin/pull/2093)
-- [FIX] `RouterGroup.StaticFS()` leaked files. Now it closes them. [#2118](https://github.com/gin-gonic/gin/pull/2118)
-- [FIX] `Context.Request.FormFile` leaked file, now it closes it [#2114](https://github.com/gin-gonic/gin/pull/2114)
-- [FIX] Ignore walking on `form:"-"` mapping [#1943](https://github.com/gin-gonic/gin/pull/1943)
-- [REFACTOR] **[Break-Backward]** Use encode replace json marshal increase json encoder speed [#1546 ](https://github.com/gin-gonic/gin/pull/1546)
-
+- [FIX] Identify terminal on a RISC-V architecture for auto-colored logs
+ [#2019](https://github.com/gin-gonic/gin/pull/2019)
+- [FIX] **[Break-Backward]** Context.JSONP() now expects a semicolon (;) at the
+ end [#2007](https://github.com/gin-gonic/gin/pull/2007)
+- [FIX] **[Break-Backward]** Upgrade validator version to v9
+ [#1015](https://github.com/gin-gonic/gin/pull/1015)
+- [FIX] Fix some typo [#2079](https://github.com/gin-gonic/gin/pull/2079)
+ [#2080](https://github.com/gin-gonic/gin/pull/2080)
+- [FIX] Relocate binding body tests
+ [#2086](https://github.com/gin-gonic/gin/pull/2086)
+- [FIX] Use Writer in Context.Status
+ [#1606](https://github.com/gin-gonic/gin/pull/1606)
+- [FIX] `Engine.RunUnix()` now returns the error if it can't change the file
+ mode [#2093](https://github.com/gin-gonic/gin/pull/2093)
+- [FIX] `RouterGroup.StaticFS()` leaked files. Now it closes them.
+ [#2118](https://github.com/gin-gonic/gin/pull/2118)
+- [FIX] `Context.Request.FormFile` leaked file, now it closes it
+ [#2114](https://github.com/gin-gonic/gin/pull/2114)
+- [FIX] Ignore walking on `form:"-"` mapping
+ [#1943](https://github.com/gin-gonic/gin/pull/1943)
+- [REFACTOR] **[Break-Backward]** Use encode replace json marshal increase json
+ encoder speed [#1546 ](https://github.com/gin-gonic/gin/pull/1546)
diff --git a/content/en/blog/releases/release16.md b/content/en/blog/releases/release16.md
index 539997c96..cec8b7bdf 100644
--- a/content/en/blog/releases/release16.md
+++ b/content/en/blog/releases/release16.md
@@ -1,60 +1,94 @@
---
-title: "Gin 1.6.0 is released"
-linkTitle: "Gin 1.6.0 is released"
+title: Gin 1.6.0 is released
+linkTitle: Gin 1.6.0 is released
date: 2020-03-22
---
### CHANGELOG
#### BREAKING
- * chore(performance): Improve performance for adding RemoveExtraSlash flag [#2159](https://github.com/gin-gonic/gin/pull/2159)
- * drop support govendor [#2148](https://github.com/gin-gonic/gin/pull/2148)
- * Added support for SameSite cookie flag [#1615](https://github.com/gin-gonic/gin/pull/1615)
+
+- chore(performance): Improve performance for adding RemoveExtraSlash flag
+ [#2159](https://github.com/gin-gonic/gin/pull/2159)
+- drop support govendor [#2148](https://github.com/gin-gonic/gin/pull/2148)
+- Added support for SameSite cookie flag
+ [#1615](https://github.com/gin-gonic/gin/pull/1615)
#### FEATURES
- * add yaml negotitation [#2220](https://github.com/gin-gonic/gin/pull/2220)
- * FileFromFS [#2112](https://github.com/gin-gonic/gin/pull/2112)
+
+- add yaml negotitation [#2220](https://github.com/gin-gonic/gin/pull/2220)
+- FileFromFS [#2112](https://github.com/gin-gonic/gin/pull/2112)
#### BUGFIXES
- * Unix Socket Handling [#2280](https://github.com/gin-gonic/gin/pull/2280)
- * Use json marshall in context json to fix breaking new line issue. Fixes #2209 [#2228](https://github.com/gin-gonic/gin/pull/2228)
- * fix accept incoming network connections [#2216](https://github.com/gin-gonic/gin/pull/2216)
- * Fixed a bug in the calculation of the maximum number of parameters [#2166](https://github.com/gin-gonic/gin/pull/2166)
- * [FIX] allow empty headers on DataFromReader [#2121](https://github.com/gin-gonic/gin/pull/2121)
- * Add mutex for protect Context.Keys map [#1391](https://github.com/gin-gonic/gin/pull/1391)
+
+- Unix Socket Handling [#2280](https://github.com/gin-gonic/gin/pull/2280)
+- Use json marshall in context json to fix breaking new line issue. Fixes #2209
+ [#2228](https://github.com/gin-gonic/gin/pull/2228)
+- fix accept incoming network connections
+ [#2216](https://github.com/gin-gonic/gin/pull/2216)
+- Fixed a bug in the calculation of the maximum number of parameters
+ [#2166](https://github.com/gin-gonic/gin/pull/2166)
+- [FIX] allow empty headers on DataFromReader
+ [#2121](https://github.com/gin-gonic/gin/pull/2121)
+- Add mutex for protect Context.Keys map
+ [#1391](https://github.com/gin-gonic/gin/pull/1391)
#### ENHANCEMENTS
- * Add mitigation for log injection [#2277](https://github.com/gin-gonic/gin/pull/2277)
- * tree: range over nodes values [#2229](https://github.com/gin-gonic/gin/pull/2229)
- * tree: remove duplicate assignment [#2222](https://github.com/gin-gonic/gin/pull/2222)
- * chore: upgrade go-isatty and json-iterator/go [#2215](https://github.com/gin-gonic/gin/pull/2215)
- * path: sync code with httprouter [#2212](https://github.com/gin-gonic/gin/pull/2212)
- * Use zero-copy approach to convert types between string and byte slice [#2206](https://github.com/gin-gonic/gin/pull/2206)
- * Reuse bytes when cleaning the URL paths [#2179](https://github.com/gin-gonic/gin/pull/2179)
- * tree: remove one else statement [#2177](https://github.com/gin-gonic/gin/pull/2177)
- * tree: sync httprouter update (#2173) (#2172) [#2171](https://github.com/gin-gonic/gin/pull/2171)
- * tree: sync part httprouter codes and reduce if/else [#2163](https://github.com/gin-gonic/gin/pull/2163)
- * use http method constant [#2155](https://github.com/gin-gonic/gin/pull/2155)
- * upgrade go-validator to v10 [#2149](https://github.com/gin-gonic/gin/pull/2149)
- * Refactor redirect request in gin.go [#1970](https://github.com/gin-gonic/gin/pull/1970)
- * Add build tag nomsgpack [#1852](https://github.com/gin-gonic/gin/pull/1852)
+
+- Add mitigation for log injection
+ [#2277](https://github.com/gin-gonic/gin/pull/2277)
+- tree: range over nodes values
+ [#2229](https://github.com/gin-gonic/gin/pull/2229)
+- tree: remove duplicate assignment
+ [#2222](https://github.com/gin-gonic/gin/pull/2222)
+- chore: upgrade go-isatty and json-iterator/go
+ [#2215](https://github.com/gin-gonic/gin/pull/2215)
+- path: sync code with httprouter
+ [#2212](https://github.com/gin-gonic/gin/pull/2212)
+- Use zero-copy approach to convert types between string and byte slice
+ [#2206](https://github.com/gin-gonic/gin/pull/2206)
+- Reuse bytes when cleaning the URL paths
+ [#2179](https://github.com/gin-gonic/gin/pull/2179)
+- tree: remove one else statement
+ [#2177](https://github.com/gin-gonic/gin/pull/2177)
+- tree: sync httprouter update (#2173) (#2172)
+ [#2171](https://github.com/gin-gonic/gin/pull/2171)
+- tree: sync part httprouter codes and reduce if/else
+ [#2163](https://github.com/gin-gonic/gin/pull/2163)
+- use http method constant [#2155](https://github.com/gin-gonic/gin/pull/2155)
+- upgrade go-validator to v10
+ [#2149](https://github.com/gin-gonic/gin/pull/2149)
+- Refactor redirect request in gin.go
+ [#1970](https://github.com/gin-gonic/gin/pull/1970)
+- Add build tag nomsgpack [#1852](https://github.com/gin-gonic/gin/pull/1852)
#### DOCS
- * docs(path): improve comments [#2223](https://github.com/gin-gonic/gin/pull/2223)
- * Renew README to fit the modification of SetCookie method [#2217](https://github.com/gin-gonic/gin/pull/2217)
- * Fix spelling [#2202](https://github.com/gin-gonic/gin/pull/2202)
- * Remove broken link from README. [#2198](https://github.com/gin-gonic/gin/pull/2198)
- * Update docs on Context.Done(), Context.Deadline() and Context.Err() [#2196](https://github.com/gin-gonic/gin/pull/2196)
- * Update validator to v10 [#2190](https://github.com/gin-gonic/gin/pull/2190)
- * upgrade go-validator to v10 for README [#2189](https://github.com/gin-gonic/gin/pull/2189)
- * Update to currently output [#2188](https://github.com/gin-gonic/gin/pull/2188)
- * Fix "Custom Validators" example [#2186](https://github.com/gin-gonic/gin/pull/2186)
- * Add project to README [#2165](https://github.com/gin-gonic/gin/pull/2165)
- * docs(benchmarks): for gin v1.5 [#2153](https://github.com/gin-gonic/gin/pull/2153)
- * Changed wording for clarity in README.md [#2122](https://github.com/gin-gonic/gin/pull/2122)
+
+- docs(path): improve comments
+ [#2223](https://github.com/gin-gonic/gin/pull/2223)
+- Renew README to fit the modification of SetCookie method
+ [#2217](https://github.com/gin-gonic/gin/pull/2217)
+- Fix spelling [#2202](https://github.com/gin-gonic/gin/pull/2202)
+- Remove broken link from README.
+ [#2198](https://github.com/gin-gonic/gin/pull/2198)
+- Update docs on Context.Done(), Context.Deadline() and Context.Err()
+ [#2196](https://github.com/gin-gonic/gin/pull/2196)
+- Update validator to v10 [#2190](https://github.com/gin-gonic/gin/pull/2190)
+- upgrade go-validator to v10 for README
+ [#2189](https://github.com/gin-gonic/gin/pull/2189)
+- Update to currently output [#2188](https://github.com/gin-gonic/gin/pull/2188)
+- Fix "Custom Validators" example
+ [#2186](https://github.com/gin-gonic/gin/pull/2186)
+- Add project to README [#2165](https://github.com/gin-gonic/gin/pull/2165)
+- docs(benchmarks): for gin v1.5
+ [#2153](https://github.com/gin-gonic/gin/pull/2153)
+- Changed wording for clarity in README.md
+ [#2122](https://github.com/gin-gonic/gin/pull/2122)
#### MISC
- * ci support go1.14 [#2262](https://github.com/gin-gonic/gin/pull/2262)
- * chore: upgrade depend version [#2231](https://github.com/gin-gonic/gin/pull/2231)
- * Drop support go1.10 [#2147](https://github.com/gin-gonic/gin/pull/2147)
- * fix comment in `mode.go` [#2129](https://github.com/gin-gonic/gin/pull/2129)
+
+- ci support go1.14 [#2262](https://github.com/gin-gonic/gin/pull/2262)
+- chore: upgrade depend version
+ [#2231](https://github.com/gin-gonic/gin/pull/2231)
+- Drop support go1.10 [#2147](https://github.com/gin-gonic/gin/pull/2147)
+- fix comment in `mode.go` [#2129](https://github.com/gin-gonic/gin/pull/2129)
diff --git a/content/en/search.md b/content/en/search.md
index 4cde3a93d..394feea5f 100644
--- a/content/en/search.md
+++ b/content/en/search.md
@@ -2,4 +2,3 @@
title: Search Results
layout: search
---
-
diff --git a/content/es/_index.html b/content/es/_index.html
deleted file mode 100644
index 6095a42f9..000000000
--- a/content/es/_index.html
+++ /dev/null
@@ -1,77 +0,0 @@
-+++
-title = "Gin Web Framework"
-linkTitle = "Gin Web Framework"
-+++
-
-{{< blocks/cover title="Gin Web Framework" image_anchor="top" height="full" color="orange" >}}
-
Claramente, el framework más rápido para desarrollo web en Go.
-
- {{< blocks/link-down color="info" >}}
-
-{{< /blocks/cover >}}
-
-
-{{% blocks/lead color="white" %}}
-
-**¿Qué es Gin?**
-
-Gin es un framework para desarrollo web escrito en Golang.
-
-Cuenta con una API tipo martini con un rendimiento mucho mayor, hasta 40 veces más rápido.
-
-Si necesitas rendimiento y productividad amarás a Gin.
-
-{{% /blocks/lead %}}
-
-{{< blocks/section color="light" >}}
-
-{{% blocks/feature icon="fa fa-tachometer-alt" title="Veloz" %}}
-Enrutamiento basado en Radix tree, poco consumo de memoria. Sin reflection. Rendimiento predecible del API.
-{{% /blocks/feature %}}
-
-{{% blocks/feature icon="fa fa-bars" title="Soporte de middleware" %}}
-Una petición entrante HTTP puede ser manejada por diversos middleware encadenados y la acción final.
-Ejemplo: Logger, Authorization, GZIP y por úlitmo guardar el mensaje en la BD.
-{{% /blocks/feature %}}
-
-{{% blocks/feature icon="fa fa-life-ring" title="Libre de crashes" %}}
-Gin puede recibir y recuperarse de un panic ocurrido durante una petición HTTP. Así tu servidor estará siempre disponible. También es posible hacer un reporte del panic, por ejemplo ¡a Sentry!
-{{% /blocks/feature %}}
-
-{{< /blocks/section >}}
-
-{{< blocks/section color="white" >}}
-
-{{% blocks/feature icon="fa fa-check-circle" title="Validación de JSON" %}}
-Gin permite analizar y validar datos JSON en una petición, y por ejemplo, revisar la existencia de datos requeridos.
-{{% /blocks/feature %}}
-
-{{% blocks/feature icon="fa fa-users-cog" title="Agrupación de rutas" %}}
-Organiza mejor tus rutas: Rutas con autorización vs rutas públicas, versiones diferentes de API. Adicionalmente los grupos de rutas pueden anidarse ilimitadamente sin afectar el rendimiento.
-{{% /blocks/feature %}}
-
-
-{{% blocks/feature icon="fa fa-briefcase" title="Manejo de errores" %}}
-Gin ofrece una conveniente forma de recopilar los errores ocurridos durante una petición HTTP. Un middleware puede incluso registrarlos en un archivo de logs, la BD o enviarlos por la red.
-{{% /blocks/feature %}}
-
-{{< /blocks/section >}}
-
-{{< blocks/section color="info" >}}
-
-{{% blocks/feature icon="fa fa-images" title="Render incluído" %}}
-Gin cuenta con una API fácil de usar para el render de JSON, XML y HTML.
-{{% /blocks/feature %}}
-
-{{% blocks/feature icon="fa fa-code" title="Extensible" %}}
-Crear un middleware nuevo es muy sencillo. Sólo debes revisar los códigos de ejemplo.
-{{% /blocks/feature %}}
-
-{{< /blocks/section >}}
diff --git a/content/es/_index.md b/content/es/_index.md
new file mode 100644
index 000000000..8cf501a6a
--- /dev/null
+++ b/content/es/_index.md
@@ -0,0 +1,94 @@
+---
+title: Gin Web Framework
+linkTitle: Gin Web Framework
+---
+
+{{< blocks/cover title="Gin Web Framework" image_anchor="top" height="full" >}}
+ Ver Más
+
+
+Descargar
+
+
Claramente, el framework más rápido para desarrollo web en Go.
+
+{{< blocks/link-down color="info" >}} {{< /blocks/cover >}}
+
+{{% blocks/lead color="white" %}}
+
+**¿Qué es Gin?**
+
+Gin es un framework para desarrollo web escrito en Golang. Cuenta con una API
+tipo martini con un rendimiento mucho mayor, hasta 40 veces más rápido.
+
+Si necesitas rendimiento y productividad amarás a Gin.
+
+{{% /blocks/lead %}}
+
+{{% blocks/section color="light" type="row" %}}
+{{% blocks/feature icon="fa-tachometer-alt" title="Veloz" %}}
+
+Enrutamiento basado en Radix tree, poco consumo de memoria. Sin reflection.
+Rendimiento predecible del API.
+
+{{% /blocks/feature %}}
+
+{{% blocks/feature icon="fa-bars" title="Soporte de middleware"%}}
+
+Una petición entrante HTTP puede ser manejada por diversos middleware
+encadenados y la acción final. Ejemplo: Logger, Authorization, GZIP y por úlitmo
+guardar el mensaje en la BD.
+
+{{% /blocks/feature %}}
+
+{{% blocks/feature icon="fa-life-ring" title="Libre de crashes"%}}
+
+Gin puede recibir y recuperarse de un panic ocurrido durante una petición HTTP.
+Así tu servidor estará siempre disponible. También es posible hacer un reporte
+del panic, por ejemplo ¡a Sentry!
+
+{{% /blocks/feature %}}
+
+{{% /blocks/section %}}
+
+{{% blocks/section color="white" type="row" %}}
+{{% blocks/feature icon="fa-check-circle" title="Validación de JSON" %}}
+
+Gin permite analizar y validar datos JSON en una petición, y por ejemplo,
+revisar la existencia de datos requeridos.
+
+{{% /blocks/feature %}}
+
+{{% blocks/feature icon="fa-users-cog" title="Agrupación de rutas"%}}
+
+Organiza mejor tus rutas: Rutas con autorización vs rutas públicas, versiones
+diferentes de API. Adicionalmente los grupos de rutas pueden anidarse
+ilimitadamente sin afectar el rendimiento.
+
+{{% /blocks/feature %}}
+
+{{% blocks/feature icon="fa-briefcase" title="Manejo de errores"%}}
+
+Gin ofrece una conveniente forma de recopilar los errores ocurridos durante una
+petición HTTP. Un middleware puede incluso registrarlos en un archivo de logs,
+la BD o enviarlos por la red.
+
+{{% /blocks/feature %}}
+
+{{% /blocks/section %}}
+
+{{% blocks/section color="info" type="row" %}}
+
+{{% blocks/feature icon="fa-images" title="Render incluído" %}}
+
+Gin cuenta con una API fácil de usar para el render de JSON, XML y HTML.
+
+{{% /blocks/feature %}}
+
+{{% blocks/feature icon="fa-code" title="Extensible" %}}
+
+Crear un middleware nuevo es muy sencillo. Sólo debes revisar los códigos de
+ejemplo.
+
+{{% /blocks/feature %}}
+
+{{% /blocks/section %}}
diff --git a/content/fa/_index.html b/content/fa/_index.html
deleted file mode 100644
index e856f95c3..000000000
--- a/content/fa/_index.html
+++ /dev/null
@@ -1,77 +0,0 @@
-+++
-title = "Gin Web Framework"
-linkTitle = "Gin Web Framework"
-+++
-
-{{< blocks/cover title="Gin Web Framework" image_anchor="top" height="full" color="orange" >}}
-
The fastest full-featured web framework for Go. Crystal clear.
-
- {{< blocks/link-down color="info" >}}
-
-{{< /blocks/cover >}}
-
-
-{{% blocks/lead color="white" %}}
-
-**Gin چیست?**
-
-جین یک فریم ورک وبه که با زبان گو ساخته شده.
-
- .جین یک فریم ورک شبیه به مارتینه(یکی دیگه از وب فریم ورک های گو) ولی با پرفورمنس بهتر . چیزی حدود 40 برار سریع تر
-
- اگه شما نیازمند پرفورمنس و کارایی بالا(بهره بری بالا) هستید عاشق جین میشید.
-
-{{% /blocks/lead %}}
-
-{{< blocks/section color="light" >}}
-
-{{% blocks/feature icon="fa fa-tachometer-alt" title="Fast" %}}
-Radix tree based routing(مسیریابی مبتنی بر درخت ردیکس), small memory foot print. No reflection(بدون تامل). Predictable API performance.
-{{% /blocks/feature %}}
-
-{{% blocks/feature icon="fa fa-bars" title="Middleware support" %}}
-An incoming HTTP request can be handled by a chain of middleware and the final action.
-For example: Logger, Authorization, GZIP and finally post a message in the DB.
-{{% /blocks/feature %}}
-
-{{% blocks/feature icon="fa fa-life-ring" title="Crash-free" %}}
-Gin can catch a panic occurred during a HTTP request and recover it. This way, your server will be always available. It’s also possible to report this panic to Sentry for example!
-{{% /blocks/feature %}}
-
-{{< /blocks/section >}}
-
-{{< blocks/section color="white" >}}
-
-{{% blocks/feature icon="fa fa-check-circle" title="JSON validation" %}}
-Gin can parse and validate the JSON of a request, checking, for example, the existence of required values.
-{{% /blocks/feature %}}
-
-{{% blocks/feature icon="fa fa-users-cog" title="Routes grouping" %}}
-Organize your routes better. Authorization required vs non required, different API versions. In addition, groups can be nested infinitely without degrading performance.
-{{% /blocks/feature %}}
-
-
-{{% blocks/feature icon="fa fa-briefcase" title="Error management" %}}
-Gin provides a convenient way to collect all the errors occurred during a HTTP request. Eventually, middleware can write them to a log file, to a database and send them through the network.
-{{% /blocks/feature %}}
-
-{{< /blocks/section >}}
-
-{{< blocks/section color="info" >}}
-
-{{% blocks/feature icon="fa fa-images" title="Rendering built-in" %}}
-Gin provides an easy to use API for JSON, XML and HTML rendering.
-{{% /blocks/feature %}}
-
-{{% blocks/feature icon="fa fa-code" title="Extendable" %}}
-Creating new middleware is so easy, just check out the sample code.
-{{% /blocks/feature %}}
-
-{{< /blocks/section >}}
diff --git a/content/fa/_index.md b/content/fa/_index.md
new file mode 100644
index 000000000..0d74cd88c
--- /dev/null
+++ b/content/fa/_index.md
@@ -0,0 +1,93 @@
+---
+title: Gin Web Framework
+linkTitle: Gin Web Framework
+---
+
+{{< blocks/cover title="Gin Web Framework" image_anchor="top" height="full" >}}
+ Learn More
+
+
+Download
+
+
The fastest full-featured web framework for Go. Crystal clear.
+
+{{< blocks/link-down color="info" >}} {{< /blocks/cover >}}
+
+{{% blocks/lead color="white" %}}
+
+**Gin چیست?**
+
+جین یک فریم ورک وبه که با زبان گو ساخته شده.
+
+.جین یک فریم ورک شبیه به مارتینه(یکی دیگه از وب فریم ورک های گو) ولی با پرفورمنس
+بهتر . چیزی حدود 40 برار سریع تر
+
+اگه شما نیازمند پرفورمنس و کارایی بالا(بهره بری بالا) هستید عاشق جین میشید.
+
+{{% /blocks/lead %}}
+
+{{% blocks/section color="light" type="row" %}}
+{{% blocks/feature icon="fa-tachometer-alt" title="Fast" %}}
+
+Radix tree based routing(مسیریابی مبتنی بر درخت ردیکس), small memory foot print.
+No reflection(بدون تامل). Predictable API performance.
+
+{{% /blocks/feature %}}
+
+{{% blocks/feature icon="fa-bars" title="Middleware support"%}}.
+
+An incoming HTTP request can be handled by a chain of middleware and the final
+action. For example: Logger, Authorization, GZIP and finally post a message in
+the DB.
+
+{{% /blocks/feature %}}
+
+{{% blocks/feature icon="fa-life-ring" title="Crash-free" %}}
+
+Gin can catch a panic occurred during a HTTP request and recover it. This way,
+your server will be always available. It’s also possible to report this panic to
+Sentry for example! {{% /blocks/feature %}}
+
+{{% /blocks/section %}}
+
+{{% blocks/section color="white" type="row" %}}
+{{% blocks/feature icon="fa-check-circle" title="JSON validation" %}}
+
+Gin can parse and validate the JSON of a request, checking, for example, the
+existence of required values.
+
+{{% /blocks/feature %}}
+
+{{% blocks/feature icon="fa-users-cog" title="Routes grouping"%}}
+
+Organize your routes better. Authorization required vs non required, different
+API versions. In addition, groups can be nested infinitely without degrading
+performance.
+
+{{% /blocks/feature %}}
+
+{{% blocks/feature icon="fa-briefcase" title="Error management" %}}
+
+Gin provides a convenient way to collect all the errors occurred during a HTTP
+request. Eventually, middleware can write them to a log file, to a database and
+send them through the network.
+
+{{% /blocks/feature %}}
+
+{{% /blocks/section %}}
+
+{{% blocks/section color="info" type="row" %}}
+
+{{% blocks/feature icon="fa-images" title="Rendering built-in" %}}
+
+Gin provides an easy to use API for JSON, XML and HTML rendering.
+
+{{% /blocks/feature %}}
+
+{{% blocks/feature icon="fa-code" title="Extendable"%}}
+
+Creating new middleware is so easy, just check out the sample code.
+
+{{% /blocks/feature %}}
+
+{{% /blocks/section %}}
diff --git a/content/ja/_index.html b/content/ja/_index.html
deleted file mode 100644
index 776fa4548..000000000
--- a/content/ja/_index.html
+++ /dev/null
@@ -1,76 +0,0 @@
-+++
-title = "Gin Web Framework"
-linkTitle = "Gin Web Framework"
-+++
-
-{{< blocks/cover title="Gin Web Framework" image_anchor="top" height="full" color="orange" >}}
-
The fastest full-featured web framework for Go. Crystal clear.
-
- {{< blocks/link-down color="info" >}}
-
-{{< /blocks/cover >}}
-
-
-{{% blocks/lead color="white" %}}
-
-**What is Gin?**
-
-Gin is a web framework written in Golang.
-
-It features a martini-like API with much better performance, up to 40 times faster.
-
-If you need performance and good productivity, you will love Gin.
-
-{{% /blocks/lead %}}
-
-{{< blocks/section color="light" >}}
-
-{{% blocks/feature icon="fa fa-tachometer-alt" title="Fast" %}}
-Radix tree based routing, small memory foot print. No reflection. Predictable API performance.
-{{% /blocks/feature %}}
-
-{{% blocks/feature icon="fa fa-bars" title="Middleware support" %}}
-A incoming HTTP request can be handled by a chain of middlewares and the final action.
-For example: Logger, Authorization, GZIP and finally post a message in the DB.
-{{% /blocks/feature %}}
-
-{{% blocks/feature icon="fa fa-life-ring" title="Crash-free" %}}
-Gin can catch a panic occurred during a HTTP request and recover it. This way, your server will be always available. It’s also possible to report this panic to Sentry for example!
-{{% /blocks/feature %}}
-
-{{< /blocks/section >}}
-
-{{< blocks/section color="white" >}}
-
-{{% blocks/feature icon="fa fa-check-circle" title="JSON validation" %}}
-Gin can parse and validate the JSON of a request, checking for example the existence of required values.
-{{% /blocks/feature %}}
-
-{{% blocks/feature icon="fa fa-users-cog" title="Routes grouping" %}}
-Organize your routes better. Authorization required vs non required, different API versions. In addition, the groups can be nested unlimitedly without degrading performance.
-{{% /blocks/feature %}}
-
-
-{{% blocks/feature icon="fa fa-briefcase" title="Error management" %}}
-Gin provides a convenient way to collect all the errors occurred during a HTTP request. Eventually, a middleware can write them to a log file, to a database and send them through the network.
-{{% /blocks/feature %}}
-
-{{< /blocks/section >}}
-
-{{< blocks/section color="info" >}}
-
-{{% blocks/feature icon="fa fa-images" title="Rendering built-in" %}}
-Gin provides an easy to use API for JSON, XML and HTML rendering.
-{{% /blocks/feature %}}
-
-{{% blocks/feature icon="fa fa-code" title="Extendable" %}}
-Creating a new middleware is so easy, just check out the sample codes.
-{{% /blocks/feature %}}
-
-{{< /blocks/section >}}
diff --git a/content/ko-kr/_index.md b/content/ko-kr/_index.md
new file mode 100644
index 000000000..290c6db5b
--- /dev/null
+++ b/content/ko-kr/_index.md
@@ -0,0 +1,90 @@
+---
+title: Gin Web Framework
+linkTitle: Gin Web Framework
+---
+
+{{< blocks/cover title="Gin Web Framework" image_anchor="top" height="full" >}}
+ Learn More
+
+
+Download
+
+
The fastest full-featured web framework for Go. Crystal clear.
+
+{{< blocks/link-down color="info" >}} {{< /blocks/cover >}}
+
+{{% blocks/lead color="white" %}}
+
+**What is Gin?**
+
+Gin is a web framework written in Golang. It features a Martini-like API, but
+with performance up to 40 times faster than Martini. If you need performance and
+productivity, you will love Gin.
+
+{{% /blocks/lead %}}
+
+{{% blocks/section color="light" type="row" %}}
+{{% blocks/feature icon="fa-tachometer-alt" title="Fast" %}}
+
+Radix tree based routing, small memory foot print. No reflection. Predictable
+API performance.
+
+{{% /blocks/feature %}}
+
+{{% blocks/feature icon="fa-bars" title="Middleware support"%}}
+
+An incoming HTTP request can be handled by a chain of middleware and the final
+action. For example: Logger, Authorization, GZIP and finally post a message in
+the DB.
+
+{{% /blocks/feature %}}
+
+{{% blocks/feature icon="fa-life-ring" title="Crash-free" %}}
+
+Gin can catch a panic occurred during a HTTP request and recover it. This way,
+your server will be always available. It’s also possible to report this panic to
+Sentry for example! {{% /blocks/feature %}}
+
+{{% /blocks/section %}}
+
+{{% blocks/section color="white" type="row" %}}
+{{% blocks/feature icon="fa-check-circle" title="JSON validation" %}}
+
+Gin can parse and validate the JSON of a request, checking, for example, the
+existence of required values.
+
+{{% /blocks/feature %}}
+
+{{% blocks/feature icon="fa-users-cog" title="Routes grouping"%}}
+
+Organize your routes better. Authorization required vs non required, different
+API versions. In addition, groups can be nested infinitely without degrading
+performance.
+
+{{% /blocks/feature %}}
+
+{{% blocks/feature icon="fa-briefcase" title="Error management" %}}
+
+Gin provides a convenient way to collect all the errors occurred during a HTTP
+request. Eventually, middleware can write them to a log file, to a database and
+send them through the network.
+
+{{% /blocks/feature %}}
+
+{{% /blocks/section %}}
+
+{{% blocks/section color="info" type="row" %}}
+
+{{% blocks/feature icon="fa-images" title="Rendering built-in" %}}
+
+Gin provides an easy to use API for JSON, XML and HTML rendering.
+
+{{% /blocks/feature %}}
+
+{{% blocks/feature icon="fa-code" title="Extendable"%}}
+
+Creating new middleware is so easy, just check out the sample code.
+
+{{% /blocks/feature %}}
+
+{{% /blocks/section %}}
diff --git a/content/ko-kr/blog/news/how-to-build-one-effective-middleware.md b/content/ko-kr/blog/news/how-to-build-one-effective-middleware.md
index d93e7cbc3..2bbf61612 100644
--- a/content/ko-kr/blog/news/how-to-build-one-effective-middleware.md
+++ b/content/ko-kr/blog/news/how-to-build-one-effective-middleware.md
@@ -1,6 +1,6 @@
---
-title: "How to build one effective middleware?"
-linkTitle: "How to build one effective middleware?"
+title: 'How to build one effective middleware?'
+linkTitle: 'How to build one effective middleware?'
date: 2019-02-26
---
@@ -8,9 +8,14 @@ date: 2019-02-26
The middleware has two parts:
- - part one is what is executed once, when you initialize your middleware. That's where you set up all the global objects, logicals etc. Everything that happens once per application lifetime.
+- part one is what is executed once, when you initialize your middleware. That's
+ where you set up all the global objects, logicals etc. Everything that happens
+ once per application lifetime.
- - part two is what executes on every request. For example, a database middleware you simply inject your "global" database object into the context. Once it's inside the context, you can retrieve it from within other middlewares and your handler function.
+- part two is what executes on every request. For example, a database middleware
+ you simply inject your "global" database object into the context. Once it's
+ inside the context, you can retrieve it from within other middlewares and your
+ handler function.
```go
func funcName(params string) gin.HandlerFunc {
@@ -28,7 +33,7 @@ func funcName(params string) gin.HandlerFunc {
// --->
// The following code is an example
c.Set("TestVar", params)
- c.Next()
+ c.Next()
}
}
```
@@ -84,7 +89,9 @@ func mid2() gin.HandlerFunc {
}
```
-According to [Constituent parts](#Constituent-parts) said, when we run the gin process, **part one** will execute firstly and will print the following information:
+According to [Constituent parts](#Constituent-parts) said, when we run the gin
+process, **part one** will execute firstly and will print the following
+information:
```go
globalMiddleware...1
@@ -104,7 +111,8 @@ mid1...1
mid2...1
```
-When we curl one request `curl -v localhost:8080/rest/n/api/some`, **part two** will execute their middleware and output the following information:
+When we curl one request `curl -v localhost:8080/rest/n/api/some`, **part two**
+will execute their middleware and output the following information:
```go
globalMiddleware...2
@@ -139,5 +147,3 @@ mid1...3
v
globalMiddleware...3
```
-
-
diff --git a/content/pt/_index.html b/content/pt/_index.html
deleted file mode 100644
index 3dd3e758a..000000000
--- a/content/pt/_index.html
+++ /dev/null
@@ -1,82 +0,0 @@
-+++
-title = "A Abstração de Web Gin"
-linkTitle = "A Abstração de Web Gin"
-+++
-
-{{< blocks/cover title="A Abstração de Web Gin" image_anchor="top" height="full" color="orange">}}
-
A mais rápida e completa abstração de web em Go. Transparente.
-
- {{< blocks/link-down color="info">}}
-
- {{< /blocks/cover>}}
-
-
- {{% blocks/lead color="white" %}}
-
- **O que é a Gin?**
-
- A Gin é uma abstração de web escrita em Golang.
-
- Ela apresenta uma API parecida com a Martini, mais com desempenho mais alto, 40 vezes mais rápida do que a Martini.
-
- Se precisas de desempenho e produtividade, amarás a Gin.
-
- {{% /blocks/lead %}}
-
- {{< blocks/section color="light">}}
-
- {{% blocks/feature icon="fa fa-tachometer-alt" title="Fast" %}}
- Árvore de roteamento baseada em Radix, pouco consumo de memória. Sem reflexão. Desempenho de API previsível.
- {{% /blocks/feature %}}
-
- {{% blocks/feature icon="fa fa-bars" title="Suporte à Intermediário" %}}
- Uma requisição futura de HTTP pode ser manipulada por uma cadeia de intermediários e pela ação final.
- Por exemplo: Registador, Autorização, GZIP e finalmente publicar uma mensagem na BD.
- {{% /blocks/feature %}}
-
- {{% blocks/feature icon="fa fa-life-ring" title="Livre de Avaria" %}}
- A Gin pode capturar um pânico que ocorreu durante uma requisição de HTTP e recuperá-lo. Deste maneira, o teu
- servidor estará sempre disponível. Também é possível informar este pânico ao Sentry por exemplo!
- {{% /blocks/feature %}}
-
- {{< /blocks/section>}}
-
- {{< blocks/section color="white">}}
-
- {{% blocks/feature icon="fa fa-check-circle" title="Validação de JSON" %}}
- A Gin pode analisar e validar o JSON de uma requisição, verificando, por exemplo, a existência de valores
- obrigatórios.
- {{% /blocks/feature %}}
-
- {{% blocks/feature icon="fa fa-users-cog" title="Agrupamento de Rotas" %}}
- Organiza melhor as tuas rotas. Autorização obrigatória vs não obrigatória, diferentes versões de API. Além
- disso, grupos podem ser encaixados infinitamente sem a degradação do desempenho.
- {{% /blocks/feature %}}
-
-
- {{% blocks/feature icon="fa fa-briefcase" title="Gestão de Erro" %}}
- A Gin fornece uma maneira conveniente de coletar todos os erros ocorridos durante uma requisição de HTTP.
- Eventualmente, o intermediário pode escrevê-los em um ficheiro de registo, em uma base de dados e enviá-los
- através da rede.
- {{% /blocks/feature %}}
-
- {{< /blocks/section>}}
-
- {{< blocks/section color="info">}}
-
- {{% blocks/feature icon="fa fa-images" title="Interpretação Embutida" %}}
- A Gin fornece uma API fácil de utilizar para interpretação de JSON, XML e HTML.
- {{% /blocks/feature %}}
-
- {{% blocks/feature icon="fa fa-code" title="Extensível" %}}
- A criação de um novo intermediário é tão fácil, apenas consulte o código de exemplo.
- {{% /blocks/feature %}}
-
- {{< /blocks/section>}}
diff --git a/content/pt/_index.md b/content/pt/_index.md
new file mode 100644
index 000000000..12c734ed4
--- /dev/null
+++ b/content/pt/_index.md
@@ -0,0 +1,92 @@
+---
+title: A Abstração de Web Gin
+linkTitle: A Abstração de Web Gin
+---
+
+{{< blocks/cover title="A Abstração de Web Gin" image_anchor="top" height="full" >}}
+ Aprenda mais
+
+
+Descarregar
+
+
A mais rápida e completa abstração de web em Go. Transparente.
+
+{{< blocks/link-down color="info" >}} {{< /blocks/cover >}}
+
+{{% blocks/lead color="white" %}}
+
+**O que é a Gin?**
+
+A Gin é uma abstração de web escrita em Golang. Ela apresenta uma API parecida
+com a Martini, mais com desempenho mais alto, 40 vezes mais rápida do que a
+Martini. Se precisas de desempenho e produtividade, amarás a Gin.
+
+{{% /blocks/lead %}}
+
+{{% blocks/section color="light" type="row" %}}
+{{% blocks/feature icon="fa-tachometer-alt" title="Fast" %}}
+
+Árvore de roteamento baseada em Radix, pouco consumo de memória. Sem reflexão.
+Desempenho de API previsível.
+
+{{% /blocks/feature %}}
+
+{{% blocks/feature icon="fa-bars" title="Suporte à Intermediário"%}}
+
+Uma requisição futura de HTTP pode ser manipulada por uma cadeia de
+intermediários e pela ação final. Por exemplo: Registador, Autorização, GZIP e
+finalmente publicar uma mensagem na BD. {{% /blocks/feature %}}
+
+{{% blocks/feature icon="fa-life-ring" title="Livre de Avaria" %}}
+
+A Gin pode capturar um pânico que ocorreu durante uma requisição de HTTP e
+recuperá-lo. Deste maneira, o teu servidor estará sempre disponível. Também é
+possível informar este pânico ao Sentry por exemplo!
+
+{{% /blocks/feature %}}
+
+{{% /blocks/section %}}
+
+{{% blocks/section color="white" type="row" %}}
+
+{{% blocks/feature icon="fa-check-circle" title="Validação de JSON" %}}
+
+A Gin pode analisar e validar o JSON de uma requisição, verificando, por
+exemplo, a existência de valores obrigatórios.
+
+{{% /blocks/feature %}}
+
+{{% blocks/feature icon="fa-users-cog" title="Agrupamento de Rotas"%}}
+
+Organiza melhor as tuas rotas. Autorização obrigatória vs não obrigatória,
+diferentes versões de API. Além disso, grupos podem ser encaixados infinitamente
+sem a degradação do desempenho.
+
+{{% /blocks/feature %}}
+
+{{% blocks/feature icon="fa-briefcase" title="Gestão de Erro" %}}
+
+A Gin fornece uma maneira conveniente de coletar todos os erros ocorridos
+durante uma requisição de HTTP. Eventualmente, o intermediário pode escrevê-los
+em um ficheiro de registo, em uma base de dados e enviá-los através da rede.
+
+{{% /blocks/feature %}}
+
+{{% /blocks/section %}}
+
+{{% blocks/section color="info" type="row" %}}
+
+{{% blocks/feature icon="fa-images" title="Interpretação Embutida" %}}
+
+A Gin fornece uma API fácil de utilizar para interpretação de JSON, XML e HTML.
+
+{{% /blocks/feature %}}
+
+{{% blocks/feature icon="fa-code" title="Extensível"%}}
+
+A criação de um novo intermediário é tão fácil, apenas consulte o código de
+exemplo.
+
+{{% /blocks/feature %}}
+
+{{% /blocks/section %}}
diff --git a/content/ru/_index.html b/content/ru/_index.html
deleted file mode 100644
index 85c54d4f2..000000000
--- a/content/ru/_index.html
+++ /dev/null
@@ -1,77 +0,0 @@
-+++
-title = "Gin Web Framework"
-linkTitle = "Gin Web Framework"
-+++
-
-{{< blocks/cover title="Gin Web Framework" image_anchor="top" height="full" color="orange" >}}
-
Самый быстрый полнофункциональный веб-фреймворк для Go. Кристально чистый.
-
- {{< blocks/link-down color="info" >}}
-
-{{< /blocks/cover >}}
-
-
-{{% blocks/lead color="white" %}}
-
-**Что такое Gin?**
-
-Gin - это веб-фреймворк, написанный на языке Golang.
-
-В нем реализован API, похожий на Martini, но производительность в 40 раз выше, чем у Martini.
-
-Если вам нужна производительность и продуктивность, Gin вам понравится.
-
-{{% /blocks/lead %}}
-
-{{< blocks/section color="light" >}}
-
-{{% blocks/feature icon="fa fa-tachometer-alt" title="Fast" %}}
-Маршрутизация на основе радиксного дерева, малый объем памяти. Никаких отражений. Предсказуемая производительность API.
-{{% /blocks/feature %}}
-
-{{% blocks/feature icon="fa fa-bars" title="Middleware support" %}}
-Входящий HTTP-запрос может быть обработан цепочкой промежуточного ПО (Middleware) и конечным действием.
-Например: Логгер, авторизация, GZIP и, наконец, публикация сообщения в БД.
-{{% /blocks/feature %}}
-
-{{% blocks/feature icon="fa fa-life-ring" title="Crash-free" %}}
-Gin может поймать панику, возникшую во время HTTP-запроса, и восстановить ее. Таким образом, ваш сервер будет всегда доступен. Также можно сообщить об этой панике, например, в Sentry!
-{{% /blocks/feature %}}
-
-{{< /blocks/section >}}
-
-{{< blocks/section color="white" >}}
-
-{{% blocks/feature icon="fa fa-check-circle" title="JSON validation" %}}
-Gin может анализировать и проверять JSON-запросы, например, на наличие необходимых значений.
-{{% /blocks/feature %}}
-
-{{% blocks/feature icon="fa fa-users-cog" title="Routes grouping" %}}
-Организуйте свои маршруты лучше. Требуется и не требуется авторизация, разные версии API. Кроме того, группы могут быть вложены бесконечно без снижения производительности.
-{{% /blocks/feature %}}
-
-
-{{% blocks/feature icon="fa fa-briefcase" title="Error management" %}}
-Gin обеспечивает удобный способ сбора всех ошибок, возникших во время HTTP-запроса. В конечном итоге промежуточное ПО (Middleware) может записывать их в файл журнала, в базу данных и отправлять через сеть.
-{{% /blocks/feature %}}
-
-{{< /blocks/section >}}
-
-{{< blocks/section color="info" >}}
-
-{{% blocks/feature icon="fa fa-images" title="Rendering built-in" %}}
-Gin предоставляет простой в использовании API для рендеринга JSON, XML и HTML.
-{{% /blocks/feature %}}
-
-{{% blocks/feature icon="fa fa-code" title="Extendable" %}}
-Создать новое промежуточное программное обеспечение очень просто, просто посмотрите пример кода.
-{{% /blocks/feature %}}
-
-{{< /blocks/section >}}
diff --git a/content/ru/_index.md b/content/ru/_index.md
new file mode 100644
index 000000000..e7e7ff29c
--- /dev/null
+++ b/content/ru/_index.md
@@ -0,0 +1,96 @@
+---
+title: Gin Web Framework
+linkTitle: Gin Web Framework
+---
+
+{{< blocks/cover title="Gin Web Framework" image_anchor="top" height="full" >}}
+ Подробнее
+
+
+Скачать
+
+
Самый быстрый полнофункциональный веб-фреймворк для Go. Кристально чистый.
+{{< blocks/link-down color="info" >}}
+{{< /blocks/cover >}}
+
+{{% blocks/lead color="white" %}}
+
+**Что такое Gin?**
+
+Gin - это веб-фреймворк, написанный на языке Golang.
+
+В нем реализован API, похожий на Martini, но производительность в 40 раз выше,
+чем у Martini.
+
+Если вам нужна производительность и продуктивность, Gin вам понравится.
+
+{{% /blocks/lead %}}
+
+{{% blocks/section color="light" type="row" %}}
+{{% blocks/feature icon="fa-tachometer-alt" title="Fast" %}}
+
+Маршрутизация на основе радиксного дерева, малый объем памяти. Никаких
+отражений. Предсказуемая производительность API.
+
+{{% /blocks/feature %}}
+
+{{% blocks/feature icon="fa-bars" title="Middleware support"%}}
+
+Входящий HTTP-запрос может быть обработан цепочкой промежуточного ПО
+(Middleware) и конечным действием. Например: Логгер, авторизация, GZIP и,
+наконец, публикация сообщения в БД.
+
+{{% /blocks/feature %}}
+
+{{% blocks/feature icon="fa-life-ring" title="Crash-free" %}}
+
+Gin может поймать панику, возникшую во время HTTP-запроса, и восстановить ее.
+Таким образом, ваш сервер будет всегда доступен. Также можно сообщить об этой
+панике, например, в Sentry!
+
+{{% /blocks/feature %}}
+
+{{% /blocks/section %}}
+
+{{% blocks/section color="white" type="row" %}}
+{{% blocks/feature icon="fa-check-circle" title="JSON validation" %}}
+
+Gin может анализировать и проверять JSON-запросы, например, на наличие
+необходимых значений.
+
+{{% /blocks/feature %}}
+
+{{% blocks/feature icon="fa-users-cog" title="Routes grouping"%}}
+
+Организуйте свои маршруты лучше. Требуется и не требуется авторизация, разные
+версии API. Кроме того, группы могут быть вложены бесконечно без снижения
+производительности.
+
+{{% /blocks/feature %}}
+
+{{% blocks/feature icon="fa-briefcase" title="Error management" %}}
+
+Gin обеспечивает удобный способ сбора всех ошибок, возникших во время
+HTTP-запроса. В конечном итоге промежуточное ПО (Middleware) может записывать их
+в файл журнала, в базу данных и отправлять через сеть.
+
+{{% /blocks/feature %}}
+
+{{% /blocks/section %}}
+
+{{% blocks/section color="info" type="row" %}}
+
+{{% blocks/feature icon="fa-images" title="Rendering built-in" %}}
+
+Gin предоставляет простой в использовании API для рендеринга JSON, XML и HTML.
+
+{{% /blocks/feature %}}
+
+{{% blocks/feature icon="fa-code" title="Extendable"%}}
+
+Создать новое промежуточное программное обеспечение очень просто, просто
+посмотрите пример кода.
+
+{{% /blocks/feature %}}
+
+{{% /blocks/section %}}
diff --git a/content/tr/_index.html b/content/tr/_index.html
deleted file mode 100644
index 04904a8b3..000000000
--- a/content/tr/_index.html
+++ /dev/null
@@ -1,76 +0,0 @@
-+++
-title = "Gin Web Framework"
-linkTitle = "Gin Web Framework"
-+++
-
-{{< blocks/cover title="Gin Web Framework" image_anchor="top" height="full" color="orange" >}}
-
Go ile yazılmış, en hızlı, tam teşekküllü ve kristal berraklığında bir web çerçevesi.
-
- {{< blocks/link-down color="info" >}}
-
-{{< /blocks/cover >}}
-
-
-{{% blocks/lead color="white" %}}
-
-**Gin nedir??**
-
-Gin, Golang'da yazılmış bir web çerçevesidir.
-
-Martini benzeri bir API'ye sahiptir, ancak performans açısından Martini'den 40 kata kadar daha hızlıdır.
-
-Performans ve üretkenliğe ihtiyacınız varsa Gin'i seveceksiniz.
-
-{{% /blocks/lead %}}
-
-{{< blocks/section color="light" >}}
-
-{{% blocks/feature icon="fa fa-tachometer-alt" title="Hızlı" %}}
-Radix ağacı tabanlı routing, küçük bellek ayak izi. Reflection yok. Öngörülebilir API performansı.
-{{% /blocks/feature %}}
-
-{{% blocks/feature icon="fa fa-bars" title="Middleware desteği" %}}
-Gelen bir HTTP isteği, bir middleware zinciri ve son eylem tarafından işlenebilir. Örneğin: Logger, Authorization, GZIP ve son olarak veritabanına bir mesaj gönderin.
-{{% /blocks/feature %}}
-
-{{% blocks/feature icon="fa fa-life-ring" title="Çökmeye Dirençli" %}}
-Gin, bir HTTP isteği sırasında oluşan bir paniği yakalayabilir ve düzeltebilir. Bu şekilde sunucunuz her zaman çalışacaktır. Ayrıca bir paniği Sentry'ye bildirmek de mümkündür.
-{{% /blocks/feature %}}
-
-{{< /blocks/section >}}
-
-{{< blocks/section color="white" >}}
-
-{{% blocks/feature icon="fa fa-check-circle" title="JSON doğrulama" %}}
-Gin, bir isteğin JSON'ını ayrıştırabilir ve doğrulayabilir. Örneğin gerekli değerlerin varlığını kontrol edebilir.
-{{% /blocks/feature %}}
-
-{{% blocks/feature icon="fa fa-users-cog" title="Route gruplama" %}}
-Routelarınızı daha iyi düzenleyin. Authorization gerektiren veya gerektirmeyen, farklı API sürümlerini kolayca düzenleyin. Ayrıca, gruplar performansı düşürmeden sınırsız olarak iç içe yerleştirilebilir.
-{{% /blocks/feature %}}
-
-
-{{% blocks/feature icon="fa fa-briefcase" title="Hata yönetimi" %}}
-Gin, bir HTTP isteği sırasında meydana gelen tüm hataları toplamak için uygun bir yol sağlar. Sonunda, middleware bunları bir log dosyasına veya bir veritabanına yazabilir ve ağ üzerinden gönderebilir.
-{{% /blocks/feature %}}
-
-{{< /blocks/section >}}
-
-{{< blocks/section color="info" >}}
-
-{{% blocks/feature icon="fa fa-images" title="Hazır rendering" %}}
-Gin, JSON, XML ve HTML işleme için kullanımı kolay bir API sağlar.
-{{% /blocks/feature %}}
-
-{{% blocks/feature icon="fa fa-code" title="Genişletilebilir" %}}
-Yeni middleware oluşturmak çok kolaydır, sadece örnek kodları inceleyin.
-{{% /blocks/feature %}}
-
-{{< /blocks/section >}}
diff --git a/content/tr/_index.md b/content/tr/_index.md
new file mode 100644
index 000000000..023d21bec
--- /dev/null
+++ b/content/tr/_index.md
@@ -0,0 +1,95 @@
+---
+title: Gin Web Framework
+linkTitle: Gin Web Framework
+---
+
+{{< blocks/cover title="Gin Web Framework" image_anchor="top" height="full" >}}
+ Daha Fazla Öğren
+
+
+İndir
+
+
Go ile yazılmış, en hızlı, tam teşekküllü ve kristal berraklığında bir web çerçevesi.
+
+{{< blocks/link-down color="info" >}} {{< /blocks/cover >}}
+
+{{% blocks/lead color="white" %}}
+
+**Gin nedir??**
+
+Gin, Golang'da yazılmış bir web çerçevesidir.
+
+Martini benzeri bir API'ye sahiptir, ancak performans açısından Martini'den 40
+kata kadar daha hızlıdır.
+
+Performans ve üretkenliğe ihtiyacınız varsa Gin'i seveceksiniz.
+
+{{% /blocks/lead %}}
+
+{{% blocks/section color="light" type="row" %}}
+{{% blocks/feature icon="fa-tachometer-alt" title="Hızlı" %}}
+
+Radix ağacı tabanlı routing, küçük bellek ayak izi. Reflection yok.
+Öngörülebilir API performansı.
+
+{{% /blocks/feature %}}
+
+{{% blocks/feature icon="fa-bars" title="Middleware desteği" %}}
+
+Gelen bir HTTP isteği, bir middleware zinciri ve son eylem tarafından
+işlenebilir. Örneğin: Logger, Authorization, GZIP ve son olarak veritabanına bir
+mesaj gönderin.
+
+{{% /blocks/feature %}}
+
+{{% blocks/feature icon="fa-life-ring" title="Çökmeye Dirençli" %}}
+
+Gin, bir HTTP isteği sırasında oluşan bir paniği yakalayabilir ve düzeltebilir.
+Bu şekilde sunucunuz her zaman çalışacaktır. Ayrıca bir paniği Sentry'ye
+bildirmek de mümkündür.
+
+{{% /blocks/feature %}}
+
+{{% /blocks/section %}}
+
+{{% blocks/section color="white" type="row" %}}
+{{% blocks/feature icon="fa-check-circle" title="JSON doğrulama" %}}
+
+Gin, bir isteğin JSON'ını ayrıştırabilir ve doğrulayabilir. Örneğin gerekli
+değerlerin varlığını kontrol edebilir.
+
+{{% /blocks/feature %}}
+
+{{% blocks/feature icon="fa-users-cog" title="Route gruplama" %}}
+
+Routelarınızı daha iyi düzenleyin. Authorization gerektiren veya gerektirmeyen,
+farklı API sürümlerini kolayca düzenleyin. Ayrıca, gruplar performansı
+düşürmeden sınırsız olarak iç içe yerleştirilebilir.
+
+{{% /blocks/feature %}}
+
+{{% blocks/feature icon="fa-briefcase" title="Hata yönetimi" %}}
+
+Gin, bir HTTP isteği sırasında meydana gelen tüm hataları toplamak için uygun
+bir yol sağlar. Sonunda, middleware bunları bir log dosyasına veya bir
+veritabanına yazabilir ve ağ üzerinden gönderebilir.
+
+{{% /blocks/feature %}}
+
+{{% /blocks/section %}}
+
+{{% blocks/section color="info" type="row" %}}
+
+{{% blocks/feature icon="fa-images" title="Hazır rendering" %}}
+
+Gin, JSON, XML ve HTML işleme için kullanımı kolay bir API sağlar.
+
+{{% /blocks/feature %}}
+
+{{% blocks/feature icon="fa-code" title="Genişletilebilir" %}}
+
+Yeni middleware oluşturmak çok kolaydır, sadece örnek kodları inceleyin.
+
+{{% /blocks/feature %}}
+
+{{% /blocks/section %}}
diff --git a/content/zh-cn/_index.html b/content/zh-cn/_index.html
deleted file mode 100644
index 8610720a4..000000000
--- a/content/zh-cn/_index.html
+++ /dev/null
@@ -1,77 +0,0 @@
-+++
-title = "Gin Web Framework"
-linkTitle = "Gin Web Framework"
-+++
-
-{{< blocks/cover title="Gin Web Framework" image_anchor="top" height="full" color="orange" >}}
-
The fastest full-featured web framework for Go. Crystal clear.
+
+{{< blocks/link-down color="info" >}} {{< /blocks/cover >}}
+
+{{% blocks/lead color="white" %}}
+
+**What is Gin?**
+
+Gin is a web framework written in Golang. It features a Martini-like API, but
+with performance up to 40 times faster than Martini. If you need performance and
+productivity, you will love Gin.
+
+{{% /blocks/lead %}}
+
+{{% blocks/section color="light" type="row" %}}
+{{% blocks/feature icon="fa-tachometer-alt" title="Fast" %}}
+
+Radix tree based routing, small memory foot print. No reflection. Predictable
+API performance.
+
+{{% /blocks/feature %}}
+
+{{% blocks/feature icon="fa-bars" title="Middleware support"%}}
+
+An incoming HTTP request can be handled by a chain of middleware and the final
+action. For example: Logger, Authorization, GZIP and finally post a message in
+the DB.
+
+{{% /blocks/feature %}}
+
+{{% blocks/feature icon="fa-life-ring" title="Crash-free" %}}
+
+Gin can catch a panic occurred during a HTTP request and recover it. This way,
+your server will be always available. It’s also possible to report this panic to
+Sentry for example! {{% /blocks/feature %}}
+
+{{% /blocks/section %}}
+
+{{% blocks/section color="white" type="row" %}}
+
+{{% blocks/feature icon="fa-check-circle" title="JSON validation" %}}
+
+Gin can parse and validate the JSON of a request, checking, for example, the
+existence of required values.
+
+{{% /blocks/feature %}}
+
+{{% blocks/feature icon="fa-users-cog" title="Routes grouping"%}}
+
+Organize your routes better. Authorization required vs non required, different
+API versions. In addition, groups can be nested infinitely without degrading
+performance.
+
+{{% /blocks/feature %}}
+
+{{% blocks/feature icon="fa-briefcase" title="Error management" %}}
+
+Gin provides a convenient way to collect all the errors occurred during a HTTP
+request. Eventually, middleware can write them to a log file, to a database and
+send them through the network.
+
+{{% /blocks/feature %}}
+
+{{% /blocks/section %}}
+
+{{% blocks/section color="info" type="row" %}}
+
+{{% blocks/feature icon="fa-images" title="Rendering built-in" %}}
+
+Gin provides an easy to use API for JSON, XML and HTML rendering.
+
+{{% /blocks/feature %}}
+
+{{% blocks/feature icon="fa-code" title="Extendable"%}}
+
+Creating new middleware is so easy, just check out the sample code.
+
+{{% /blocks/feature %}}
+
+{{% /blocks/section %}}
diff --git a/go.mod b/go.mod
index 0e69b2a75..884c85570 100644
--- a/go.mod
+++ b/go.mod
@@ -1,9 +1,5 @@
-module github.com/gin-gonic/website
+module github.com/google/docsy-example
-go 1.22.2
+go 1.12
-require (
- github.com/google/docsy v0.9.2-0.20240426161215-e9eca0fcb3b5 // indirect
- github.com/FortAwesome/Font-Awesome v0.0.0-20240402185447-c0f460dca7f7 // indirect
- github.com/twbs/bootstrap v5.3.3+incompatible // indirect
-)
+require github.com/google/docsy v0.10.1-0.20240529105443-333c2f8d4172 // indirect - v0.10.0-12-g333c2f8
diff --git a/go.sum b/go.sum
index 9b580b446..c74f991fe 100644
--- a/go.sum
+++ b/go.sum
@@ -1,12 +1,10 @@
-github.com/FortAwesome/Font-Awesome v0.0.0-20240108205627-a1232e345536/go.mod h1:IUgezN/MFpCDIlFezw3L8j83oeiIuYoj28Miwr/KUYo=
-github.com/FortAwesome/Font-Awesome v0.0.0-20240402185447-c0f460dca7f7 h1:2aWEKCRLqQ9nPyXaz4/IYtRrDr3PzEiX0DUSUr2/EDs=
github.com/FortAwesome/Font-Awesome v0.0.0-20240402185447-c0f460dca7f7/go.mod h1:IUgezN/MFpCDIlFezw3L8j83oeiIuYoj28Miwr/KUYo=
-github.com/FortAwesome/Font-Awesome v4.7.0+incompatible h1:3trjm7NtX5NXlju1AxSWSzedDMq2hsfH78Qtqrc8EgY=
-github.com/FortAwesome/Font-Awesome v4.7.0+incompatible/go.mod h1:IUgezN/MFpCDIlFezw3L8j83oeiIuYoj28Miwr/KUYo=
-github.com/google/docsy v0.9.1 h1:+jqges1YCd+yHeuZ1BUvD8V8mEGVtPxULg5j/vaJ984=
-github.com/google/docsy v0.9.1/go.mod h1:saOqKEUOn07Bc0orM/JdIF3VkOanHta9LU5Y53bwN2U=
-github.com/google/docsy v0.9.2-0.20240426161215-e9eca0fcb3b5 h1:EDs9FRTZ75agHdnMeO3HjfqJV10jKpdsM6XEARy/FsM=
-github.com/google/docsy v0.9.2-0.20240426161215-e9eca0fcb3b5/go.mod h1:c0nIAqmRTOuJ01F85U/wJPQtc3Zj9N58Kea9bOT2AJc=
-github.com/twbs/bootstrap v5.2.3+incompatible/go.mod h1:fZTSrkpSf0/HkL0IIJzvVspTt1r9zuf7XlZau8kpcY0=
-github.com/twbs/bootstrap v5.3.3+incompatible h1:goFoqinzdHfkeegpFP7pvhbd0g+A3O2hbU3XCjuNrEQ=
+github.com/google/docsy v0.10.0 h1:6tMDacPwAyRWNCfvsn/9qGOZDQ8b0aRzjRZvnZPY5dg=
+github.com/google/docsy v0.10.0/go.mod h1:c0nIAqmRTOuJ01F85U/wJPQtc3Zj9N58Kea9bOT2AJc=
+github.com/google/docsy v0.10.1-0.20240516225026-36746913371a h1:Fmx4SmmyWZf4q3rq9jhVWr6/h2MKEi4+61irjQO2ylI=
+github.com/google/docsy v0.10.1-0.20240516225026-36746913371a/go.mod h1:c0nIAqmRTOuJ01F85U/wJPQtc3Zj9N58Kea9bOT2AJc=
+github.com/google/docsy v0.10.1-0.20240528200232-6549143cf323 h1:T4UiGpcrIgiuyQj0tc7BtJwv6u736J8Jnl4QZno0fk4=
+github.com/google/docsy v0.10.1-0.20240528200232-6549143cf323/go.mod h1:c0nIAqmRTOuJ01F85U/wJPQtc3Zj9N58Kea9bOT2AJc=
+github.com/google/docsy v0.10.1-0.20240529105443-333c2f8d4172 h1:1gAAuOfHRok/hJqfF+wpjOYqlH0d76dwUsskLEnOzxo=
+github.com/google/docsy v0.10.1-0.20240529105443-333c2f8d4172/go.mod h1:c0nIAqmRTOuJ01F85U/wJPQtc3Zj9N58Kea9bOT2AJc=
github.com/twbs/bootstrap v5.3.3+incompatible/go.mod h1:fZTSrkpSf0/HkL0IIJzvVspTt1r9zuf7XlZau8kpcY0=
diff --git a/hugo.toml b/hugo.toml
index f97f392a5..2d2f14e02 100644
--- a/hugo.toml
+++ b/hugo.toml
@@ -151,7 +151,7 @@ time_format_blog = "02.01.2006"
# Everything below this are Site Params
[params]
-copyright = "Gin Team"
+copyright = "Gin Team All Rights Reserved"
#privacy_policy = "https://policies.google.com/privacy"
# First one is picked as the Twitter card image if not set on page.
@@ -217,7 +217,7 @@ no = 'Sorry to hear that. Please home page.
+
You can learn how to make a 404 page like this in Custom 404 Pages.