mirror of
https://github.com/kataras/iris.git
synced 2025-01-23 18:51:03 +01:00
176 lines
3.4 KiB
Go
176 lines
3.4 KiB
Go
|
package main
|
||
|
|
||
|
import (
|
||
|
"strings"
|
||
|
|
||
|
"github.com/kataras/iris/v12"
|
||
|
)
|
||
|
|
||
|
const (
|
||
|
female = iota + 1
|
||
|
male
|
||
|
)
|
||
|
|
||
|
const tableStyle = `
|
||
|
<style>
|
||
|
a {
|
||
|
padding: 8px 8px;
|
||
|
text-decoration:none;
|
||
|
cursor:pointer;
|
||
|
color: #10a2ff;
|
||
|
}
|
||
|
table {
|
||
|
position: absolute;
|
||
|
top: 0;
|
||
|
bottom: 0;
|
||
|
left: 0;
|
||
|
right: 0;
|
||
|
height: 100%;
|
||
|
width: 100%;
|
||
|
border-collapse: collapse;
|
||
|
border-spacing: 0;
|
||
|
empty-cells: show;
|
||
|
border: 1px solid #cbcbcb;
|
||
|
}
|
||
|
|
||
|
table caption {
|
||
|
color: #000;
|
||
|
font: italic 85%/1 arial, sans-serif;
|
||
|
padding: 1em 0;
|
||
|
text-align: center;
|
||
|
}
|
||
|
|
||
|
table td,
|
||
|
table th {
|
||
|
border-left: 1px solid #cbcbcb;
|
||
|
border-width: 0 0 0 1px;
|
||
|
font-size: inherit;
|
||
|
margin: 0;
|
||
|
overflow: visible;
|
||
|
padding: 0.5em 1em;
|
||
|
}
|
||
|
|
||
|
table thead {
|
||
|
background-color: #10a2ff;
|
||
|
color: #fff;
|
||
|
text-align: left;
|
||
|
vertical-align: bottom;
|
||
|
}
|
||
|
|
||
|
table td {
|
||
|
background-color: transparent;
|
||
|
}
|
||
|
|
||
|
.table-odd td {
|
||
|
background-color: #f2f2f2;
|
||
|
}
|
||
|
|
||
|
.table-bordered td {
|
||
|
border-bottom: 1px solid #cbcbcb;
|
||
|
}
|
||
|
.table-bordered tbody > tr:last-child > td {
|
||
|
border-bottom-width: 0;
|
||
|
}
|
||
|
</style>
|
||
|
`
|
||
|
|
||
|
/*
|
||
|
$ go run .
|
||
|
Visit http://localhost:8080
|
||
|
*/
|
||
|
func main() {
|
||
|
app := iris.New()
|
||
|
err := app.I18n.Load("./locales/*/*", "en-US")
|
||
|
// ^ here we only use a single locale for the sake of the example,
|
||
|
// on a real app you can register as many languages as you want to support.
|
||
|
if err != nil {
|
||
|
panic(err)
|
||
|
}
|
||
|
|
||
|
app.Get("/", func(ctx iris.Context) {
|
||
|
ctx.HTML("<html><body>\n")
|
||
|
ctx.WriteString(tableStyle)
|
||
|
ctx.WriteString(`<table class="table-bordered table-odd">
|
||
|
<thead>
|
||
|
<tr>
|
||
|
<th>Key</th>
|
||
|
<th>Translation</th>
|
||
|
<th>Arguments</th>
|
||
|
</tr>
|
||
|
</thead><tbody>
|
||
|
`)
|
||
|
defer ctx.WriteString("</tbody></table></body></html>")
|
||
|
|
||
|
tr(ctx, "Classic")
|
||
|
|
||
|
tr(ctx, "YouLate", 1)
|
||
|
tr(ctx, "YouLate", 2)
|
||
|
|
||
|
tr(ctx, "FreeDay", 1)
|
||
|
tr(ctx, "FreeDay", 5)
|
||
|
|
||
|
tr(ctx, "FreeDay", 3, 15)
|
||
|
|
||
|
tr(ctx, "HeIsHome", "Peter")
|
||
|
|
||
|
tr(ctx, "HouseCount", female, 2, "Maria")
|
||
|
tr(ctx, "HouseCount", male, 1, "Peter")
|
||
|
|
||
|
tr(ctx, "nav.home")
|
||
|
tr(ctx, "nav.user")
|
||
|
tr(ctx, "nav.more.what")
|
||
|
tr(ctx, "nav.more.even.more")
|
||
|
tr(ctx, "nav.more.even.aplural", 1)
|
||
|
tr(ctx, "nav.more.even.aplural", 15)
|
||
|
|
||
|
tr(ctx, "VarTemplate", iris.Map{
|
||
|
"Name": "Peter",
|
||
|
"GenderCount": male,
|
||
|
})
|
||
|
|
||
|
tr(ctx, "VarTemplatePlural", 1, female)
|
||
|
tr(ctx, "VarTemplatePlural", 2, female, 1)
|
||
|
tr(ctx, "VarTemplatePlural", 2, female, 5)
|
||
|
tr(ctx, "VarTemplatePlural", 1, male)
|
||
|
tr(ctx, "VarTemplatePlural", 2, male, 1)
|
||
|
tr(ctx, "VarTemplatePlural", 2, male, 2)
|
||
|
|
||
|
tr(ctx, "VarTemplatePlural", iris.Map{
|
||
|
"PluralCount": 5,
|
||
|
"Names": []string{"Makis", "Peter"},
|
||
|
"InlineJoin": func(arr []string) string {
|
||
|
return strings.Join(arr, ", ")
|
||
|
},
|
||
|
})
|
||
|
|
||
|
tr(ctx, "TemplatePlural", iris.Map{
|
||
|
"PluralCount": 1,
|
||
|
"Name": "Peter",
|
||
|
})
|
||
|
tr(ctx, "TemplatePlural", iris.Map{
|
||
|
"PluralCount": 5,
|
||
|
"Names": []string{"Makis", "Peter"},
|
||
|
"InlineJoin": func(arr []string) string {
|
||
|
return strings.Join(arr, ", ")
|
||
|
},
|
||
|
})
|
||
|
tr(ctx, "VarTemplatePlural", 2, male, 4)
|
||
|
|
||
|
tr(ctx, "TemplateVarTemplatePlural", iris.Map{
|
||
|
"PluralCount": 3,
|
||
|
"DogsCount": 5,
|
||
|
})
|
||
|
|
||
|
tr(ctx, "message.HostResult")
|
||
|
|
||
|
tr(ctx, "LocalVarsHouseCount.Text", 3, 4)
|
||
|
})
|
||
|
|
||
|
app.Listen(":8080")
|
||
|
}
|
||
|
|
||
|
func tr(ctx iris.Context, key string, args ...interface{}) {
|
||
|
translation := ctx.Tr(key, args...)
|
||
|
ctx.Writef("<tr><td>%s</td><td>%s</td><td>%v</td></tr>\n", key, translation, args)
|
||
|
}
|