Skip to content
Snippets Groups Projects
Verified Commit 2feba3ff authored by Volker Schukai's avatar Volker Schukai :alien:
Browse files

feat: consider json translations

parent 7ce44ec8
No related branches found
No related tags found
No related merge requests found
Showing
with 644 additions and 60 deletions
......@@ -2,9 +2,9 @@ package main
import (
"fmt"
html2 "gitlab.schukai.com/oss/bob.git/html"
template2 "gitlab.schukai.com/oss/bob.git/template"
"gitlab.schukai.com/oss/bob.git/types"
html2 "gitlab.schukai.com/oss/bob/html"
template2 "gitlab.schukai.com/oss/bob/template"
"gitlab.schukai.com/oss/bob/types"
"gitlab.schukai.com/oss/libraries/go/application/xflags"
"gopkg.in/yaml.v3"
"os"
......
module gitlab.schukai.com/oss/bob.git
module gitlab.schukai.com/oss/bob
go 1.19
go 1.20
require (
github.com/andybalholm/cascadia v1.3.1
gitlab.schukai.com/oss/libraries/go/application/xflags v1.13.2
gitlab.schukai.com/oss/libraries/go/markup/html v0.3.0
golang.org/x/crypto v0.4.0
golang.org/x/net v0.4.0
golang.org/x/crypto v0.6.0
golang.org/x/net v0.6.0
gopkg.in/yaml.v3 v3.0.1
)
......@@ -28,7 +29,7 @@ require (
gitlab.schukai.com/oss/libraries/go/utilities/data.git v0.2.0 // indirect
gitlab.schukai.com/oss/libraries/go/utilities/pathfinder v0.5.2 // indirect
golang.org/x/exp v0.0.0-20221023144134-a1e5550cf13e // indirect
golang.org/x/sys v0.3.0 // indirect
golang.org/x/sys v0.5.0 // indirect
google.golang.org/appengine v1.6.7 // indirect
google.golang.org/protobuf v1.28.1 // indirect
)
github.com/andybalholm/cascadia v1.3.1 h1:nhxRkql1kdYCc8Snf7D5/D3spOX+dBgjA6u8x004T2c=
github.com/andybalholm/cascadia v1.3.1/go.mod h1:R4bJ1UQfqADjvDa4P6HZHLh/3OxWWEqc0Sk8XGwHqvA=
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/fsnotify/fsnotify v1.6.0 h1:n+5WquG0fcWoWp6xPWfHdbskMCQaFnG6PfBrh1Ky4HY=
github.com/fsnotify/fsnotify v1.6.0/go.mod h1:sl3t1tCWJFWoRz9R8WJCbQihKKwmorjAbSClcnxKAGw=
github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk=
github.com/golang/protobuf v1.5.2 h1:ROPKBNFfQgOUMifHyP+KYbvpjbdoFNs+aK7DXlji0Tw=
github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY=
github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
github.com/imdario/mergo v0.3.13 h1:lFzP57bqS/wsqKssCGmtLAb8A0wKjLGrve2q3PPVcBk=
github.com/imdario/mergo v0.3.13/go.mod h1:4lJ1jqUDcsbIECGy0RUJAXNIhg+6ocWgb1ALK2O4oXg=
github.com/magiconair/properties v1.8.6 h1:5ibWZ6iY0NctNGWo87LalDlEZ6R41TqbbDamhfG/Qzo=
github.com/magiconair/properties v1.8.6/go.mod h1:y3VJvCyxH9uVvJTWEGAELF3aiYNyPKd5NZ3oSwXrF60=
github.com/pelletier/go-toml/v2 v2.0.5 h1:ipoSadvV8oGUjnUbMub59IDPPwfxF694nG/jwbMiyQg=
github.com/pelletier/go-toml/v2 v2.0.5/go.mod h1:OMHamSCAODeSsVrwwvcJOaoN0LIUIaFVNZzmWyNfXas=
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
github.com/r3labs/diff/v3 v3.0.0 h1:ZhPwNxn9gW5WLPBV9GCYaVbMdLOSmJ0DeKdCiSbOLUI=
github.com/r3labs/diff/v3 v3.0.0/go.mod h1:wCkTySAiDnZao1sZrVTDIzuzgLZ+cNPGn3LC8DlIg5g=
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw=
......@@ -26,53 +18,34 @@ github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpE
github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA=
github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
github.com/stretchr/testify v1.8.0 h1:pSgiaMZlXftHpm5L7V1+rVB+AZJydKsMxsQBIJw4PKk=
github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU=
github.com/stretchr/testify v1.8.1 h1:w7B6lhMri9wdJUVmEZPGGhZzrYTPvgJArz7wNPgYKsk=
github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4=
github.com/vmihailenco/msgpack v4.0.4+incompatible h1:dSLoQfGFAo3F6OoNhwUmLwVgaUXK79GlxNBwueZn0xI=
github.com/vmihailenco/msgpack v4.0.4+incompatible/go.mod h1:fy3FlTQTDXWkZ7Bh6AcGMlsjHatGryHQYUTf1ShIgkk=
github.com/volker-schukai/tokenizer v1.0.0 h1:wF4haFoCodq7lgAk8c+th/DZmpFpL2WVD8wDzAGU1mA=
github.com/volker-schukai/tokenizer v1.0.0/go.mod h1:LPw7lLIxUnZgeg96818N7IvwLE1x8ya31J/Aa0aCq9M=
gitlab.schukai.com/oss/libraries/go/application/configuration v1.14.0 h1:cuS7BxTe5pS5iUD6eJKNcErRx6NHGNAGeZx8tOED9pk=
gitlab.schukai.com/oss/libraries/go/application/configuration v1.14.0/go.mod h1:me1BS/adhucf6h8t2ew0ifaNVio2vunQIYfpofUBbF8=
gitlab.schukai.com/oss/libraries/go/application/xflags v1.13.0 h1:nTnuGzAOzUTlmrst8tPrLp5EFOwC+6vozsxOcnGVfQk=
gitlab.schukai.com/oss/libraries/go/application/xflags v1.13.0/go.mod h1:EEYPy5RYR4ahK9J6CTKSLFHUhP+ndHBWVdQMtGCFqDo=
gitlab.schukai.com/oss/libraries/go/application/xflags v1.13.2 h1:3nRDFUs629qL8EGxeX3gzNUqIR/04uUvXiW0G7qJ8Jk=
gitlab.schukai.com/oss/libraries/go/application/xflags v1.13.2/go.mod h1:EEYPy5RYR4ahK9J6CTKSLFHUhP+ndHBWVdQMtGCFqDo=
gitlab.schukai.com/oss/libraries/go/markup/html v0.2.1 h1:d08SBGYHXHWOCJqaLh1Cfh6rOYmHoRJxM63GhF2klCo=
gitlab.schukai.com/oss/libraries/go/markup/html v0.2.1/go.mod h1:h0+dJUwXfF1QeaBxFiidgxA2I3A9qIPE+zhfs88pKV8=
gitlab.schukai.com/oss/libraries/go/markup/html v0.3.0 h1:RvEQgV6yj8M1SjmR/FZwmwykfJSbHrDk8m7IIlujhxY=
gitlab.schukai.com/oss/libraries/go/markup/html v0.3.0/go.mod h1:h0+dJUwXfF1QeaBxFiidgxA2I3A9qIPE+zhfs88pKV8=
gitlab.schukai.com/oss/libraries/go/network/http-negotiation v1.3.0 h1:SZG0BW5ll3WK5ZIOTogjqX8oVHCTxANTDLPxUs7Rnx8=
gitlab.schukai.com/oss/libraries/go/network/http-negotiation v1.3.0/go.mod h1:RS2rKf5O+rmSBshHLOgjG7dxg5N2MhNYokZOBcuXdX8=
gitlab.schukai.com/oss/libraries/go/utilities/data.git v0.2.0 h1:JVxMHiA8zFVjJDhNl65XeYrhdMkzB+5dyrBUEZ982WU=
gitlab.schukai.com/oss/libraries/go/utilities/data.git v0.2.0/go.mod h1:BsR4Y9jsvISplkW6UoLFRGxQX69/AUmP1SXRwWhx31o=
gitlab.schukai.com/oss/libraries/go/utilities/pathfinder v0.3.1 h1:oyElaqEiyr2XgaE1CYwD8LoeHsuR/vQD/p6k3jYbJFs=
gitlab.schukai.com/oss/libraries/go/utilities/pathfinder v0.3.1/go.mod h1:UvdD4NAf3gLKYafabJD7e9ZCOetzM9JZ9y4GkZukPVU=
gitlab.schukai.com/oss/libraries/go/utilities/pathfinder v0.5.0 h1:LsKHjuiEzOS3W5UqtqLmHEDYGVQ7qddf88rmD1HmI4M=
gitlab.schukai.com/oss/libraries/go/utilities/pathfinder v0.5.0/go.mod h1:UvdD4NAf3gLKYafabJD7e9ZCOetzM9JZ9y4GkZukPVU=
gitlab.schukai.com/oss/libraries/go/utilities/pathfinder v0.5.2 h1:R+dL2NJCM+AQNPK4DPDmfvx1eomi1Xb1dl0XKEFj7Ek=
gitlab.schukai.com/oss/libraries/go/utilities/pathfinder v0.5.2/go.mod h1:UvdD4NAf3gLKYafabJD7e9ZCOetzM9JZ9y4GkZukPVU=
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
golang.org/x/crypto v0.4.0 h1:UVQgzMY87xqpKNgb+kDsll2Igd33HszWHFLmpaRMq/8=
golang.org/x/crypto v0.4.0/go.mod h1:3quD/ATkf6oY+rnes5c3ExXTbLc8mueNue5/DoinL80=
golang.org/x/exp v0.0.0-20221023144134-a1e5550cf13e h1:SkwG94eNiiYJhbeDE018Grw09HIN/KB9NlRmZsrzfWs=
golang.org/x/crypto v0.6.0 h1:qfktjS5LUO+fFKeJXZ+ikTRijMmljikvG68fpMMruSc=
golang.org/x/crypto v0.6.0/go.mod h1:OFC/31mSvZgRz0V1QTNCzfAI1aIRzbiufJtkMIlEp58=
golang.org/x/exp v0.0.0-20221023144134-a1e5550cf13e/go.mod h1:cyybsKvd6eL0RnXn6p/Grxp8F5bW7iYuBgsNCOHpMYE=
golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks=
golang.org/x/net v0.0.0-20210916014120-12bc252f5db8/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
golang.org/x/net v0.1.0 h1:hZ/3BUoy5aId7sCpA/Tc5lt8DkFgdVS2onTpJsZ/fl0=
golang.org/x/net v0.1.0/go.mod h1:Cx3nUiGt4eDBEyega/BKRp+/AlGL8hYe7U9odMt2Cco=
golang.org/x/net v0.3.0/go.mod h1:MBQ8lrhLObU/6UmLb4fmbmk5OcyYmqtbGd/9yIeKjEE=
golang.org/x/net v0.4.0 h1:Q5QPcMlvfxFTAPV0+07Xz/MpK9NTXu2VDUuy0FeMfaU=
golang.org/x/net v0.4.0/go.mod h1:MBQ8lrhLObU/6UmLb4fmbmk5OcyYmqtbGd/9yIeKjEE=
golang.org/x/net v0.6.0 h1:L4ZwwTvKW9gr0ZMS1yrHD9GZhIuVjOBBnaKH+SPQK0Q=
golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs=
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20220908164124-27713097b956/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.1.0 h1:kunALQeHf1/185U1i0GOB/fy1IPRDDpuoOOqRReG57U=
golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.3.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=
......@@ -80,11 +53,9 @@ golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
google.golang.org/appengine v1.6.6/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc=
google.golang.org/appengine v1.6.7 h1:FZR1q0exgwxzPzp/aF+VccGrSfxfPpkBqjIIEq3ru6c=
google.golang.org/appengine v1.6.7/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc=
google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw=
google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=
google.golang.org/protobuf v1.28.1 h1:d0NfwRgPtno5B1Wa6L2DAG+KivqkdutMf1UhdNx175w=
google.golang.org/protobuf v1.28.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I=
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
......
......@@ -2,7 +2,7 @@ package html
import (
"github.com/andybalholm/cascadia"
"gitlab.schukai.com/oss/bob.git/types"
"gitlab.schukai.com/oss/bob/types"
"gitlab.schukai.com/oss/libraries/go/markup/html/engine"
"golang.org/x/net/html"
"gopkg.in/yaml.v3"
......
package html
import (
"gitlab.schukai.com/oss/bob.git/types"
"encoding/json"
"gitlab.schukai.com/oss/bob/types"
"gitlab.schukai.com/oss/libraries/go/markup/html/engine"
"gopkg.in/yaml.v3"
"os"
......@@ -81,6 +82,18 @@ func Generate(data *types.PageData, name string) (string, error) {
dataset["text"].(map[any]any)[v.Id] = map[any]any{"text": v.Text}
}
dataset["translations"] = make(map[string]any, 0)
for _, v := range data.Translations {
j, err := json.Marshal(v.KeyValues)
if err != nil {
return "", err
}
dataset["translations"].(map[string]any)[v.Id] = map[string]string{
"content": string(j),
}
}
e := engine.New(dataset)
template, err := os.ReadFile(name)
......
......@@ -3,7 +3,7 @@ package html
import (
"fmt"
"github.com/andybalholm/cascadia"
"gitlab.schukai.com/oss/bob.git/types"
"gitlab.schukai.com/oss/bob/types"
"gitlab.schukai.com/oss/libraries/go/markup/html/engine"
"golang.org/x/net/html"
"gopkg.in/yaml.v3"
......
package template
import (
"encoding/json"
"fmt"
"github.com/andybalholm/cascadia"
"gitlab.schukai.com/oss/bob.git/types"
"gitlab.schukai.com/oss/bob.git/util"
"gitlab.schukai.com/oss/bob/types"
"gitlab.schukai.com/oss/bob/util"
"golang.org/x/net/html"
"golang.org/x/net/html/atom"
"path"
......@@ -215,6 +217,49 @@ func prepareImages(node *html.Node, storage *types.PageData) {
}
func prepareTranslationJson(node *html.Node, storage *types.PageData) {
selector, err := cascadia.Parse("script[data-monster-role=translation]")
if err != nil {
return
}
list := cascadia.QueryAll(node, selector)
if list == nil {
return
}
for _, n := range list {
id := util.GetAttribute(n.Attr, "id")
typ := util.GetAttribute(n.Attr, "type")
n.Attr = removeAttribute(n.Attr, attributeReplace)
n.Attr = append(n.Attr, html.Attribute{Key: attributeReplace, Val: "path:translations." + id + ".content"})
content := ""
for c := n.FirstChild; c != nil; c = c.NextSibling {
if c.Type == html.TextNode {
content += c.Data
}
}
content = strings.TrimSpace(content)
t := make(map[string]any)
err := json.Unmarshal([]byte(content), &t)
if err != nil {
fmt.Println(err)
}
storage.Translations = append(storage.Translations, types.Translations{
Id: id,
Type: typ,
KeyValues: t,
})
}
}
func prepareTextNodes(node *html.Node, storage *types.PageData) {
selector, err := cascadia.Parse("body")
......@@ -307,6 +352,8 @@ func PrepareHtmlFile(from, to string, storage types.PageDataStorage) error {
prepareAnchors(node, pd)
prepareTextNodes(node, pd)
prepareTranslationJson(node, pd)
pd.Export = path.Join(pd.Lang, path.Base(from))
to = path.Join(to, path.Base(from))
......
......@@ -19,14 +19,21 @@ type Anchor struct {
Title string
}
type Translations struct {
Id string `yaml:"id"`
Type string `yaml:"type"`
KeyValues map[string]any `yaml:"translations"`
}
type PageData struct {
Export string `yaml:"export"`
Lang string `yaml:"lang"`
Title string `yaml:"title"`
Meta map[string]string `yaml:"meta"`
Images []Image `yaml:"images"`
Anchors []Anchor `yaml:"anchors"`
Text []Text `yaml:"text"`
Export string `yaml:"export"`
Translations []Translations `yaml:"translations"`
}
func NewPageData() *PageData {
......
<!DOCTYPE html>
<html lang="de">
<head>
<style>
*:not(:defined) {
visibility: hidden;
}
</style>
<meta charset="utf-8"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<meta name="robots" content="noindex"/>
<link rel="icon" type="image/x-icon" href="/asset/icon/favicon.svg"/>
<meta name="theme-color" content="#c10000"/>
<link rel="apple-touch-icon" sizes="180x180" href="/asset/icon/apple-touch-icon.png"/>
<link rel="icon" type="image/png" sizes="32x32" href="/asset/icon/favicon-32x32.png"/>
<link rel="icon" type="image/png" sizes="16x16" href="/asset/icon/favicon-16x16.png"/>
<link rel="mask-icon" href="/asset/icon/safari-pinned-tab.svg" color="#fd1d1d"/>
<meta name="msapplication-TileImage" content="/asset/icon/mstile-144x144.png"/>
<meta name="msapplication-TileColor" content="#fd1d1d"/>
<title>TESTx</title>
<meta name="description" content="The request was malformed or invalid."/>
<meta name="author" content="schukai GmbH"/>
<link rel="icon" href="/favicon.ico"/>
<link rel="icon" href="/favicon.svg" type="image/svg+xml"/>
<link rel="apple-touch-icon" href="/apple-touch-icon.png"/>
<script id="translations" type="application/json" data-monster-role="translation">{
"key1": "value1 gfgf66",
"key2": "value2 gg",
"key3": {
"one": "value3 tgtgt",
"two": "value4 trzrtz"
}
}</script>
<script id="mainscript" src="/script/main22.mjs" type="module"></script>
</head>
<body>
<header>
<div class="gradient"></div>
</header>
<monster-state>
<img width="16" height="16" alt="tick" title="yes" src="data:image/gif;base64,R0lGODdhEAAQAMwAAPj7+FmhUYjNfGuxYYDJdYTIeanOpT+DOTuANXi/bGOrWj6CONzv2sPjv2Cm
V1unU4zPgI/Sg6DJnJ3ImTh8Mtbs00aNP1CZSGy0YqLEn47RgXW8amasW7XWsmmvX2iuXiwAAAAAEAAQAAAFVyAgjmRpnihqGCkpDQ
PbGkNUOFk6DZqgHCNGg2T4QAQBoIiRSAwBE4VA4FACKgkB5NGReASFZEmxsQ0whPDi9BiACYQAInXhwOUtgCUQoORFCGt/g4QAIQA7"
id="tickyesdata-image-gi-4013311193"/>
<h1 class="deco">Bad xxxx</h1>
<p>The request was incorrect, the server could not process it.</p>
<p>
</p>
<div class="infobox">
<div>
<ul>
<li>Try submitting your<a id="yes-a-html" href="/a.html" title="Yes" hreflang="">request</a> again
(sometimes this helps).
</li>
<li>Contact support if you continue to have problems.</li>
<li>If you received this message as a result of a request to the server API, then check the structure
against the documentation.
</li>
</ul>
<p>You can try the following steps:</p>
</div>
</div>
</monster-state>
</body>
</html>
\ No newline at end of file
<!DOCTYPE html><html lang="en"><head>
<style>
*:not(:defined) {
visibility: hidden;
}
</style>
<meta charset="utf-8"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<meta name="robots" content="noindex"/>
<link rel="icon" type="image/x-icon" href="/asset/icon/favicon.svg"/>
<meta name="theme-color" content="#c10000"/>
<link rel="apple-touch-icon" sizes="180x180" href="/asset/icon/apple-touch-icon.png"/>
<link rel="icon" type="image/png" sizes="32x32" href="/asset/icon/favicon-32x32.png"/>
<link rel="icon" type="image/png" sizes="16x16" href="/asset/icon/favicon-16x16.png"/>
<link rel="mask-icon" href="/asset/icon/safari-pinned-tab.svg" color="#fd1d1d"/>
<meta name="msapplication-TileImage" content="/asset/icon/mstile-144x144.png"/>
<meta name="msapplication-TileColor" content="#fd1d1d"/>
<title>TEST2</title>
<meta name="description" content="The 2request was malformed or invalid."/>
<meta name="author" content="sch2ukai GmbH"/>
<link rel="icon" href="/favicon.ico"/>
<link rel="icon" href="/favicon.svg" type="image/svg+xml"/>
<link rel="apple-touch-icon" href="/apple-touch-icon.png"/>
<script id="mainscript" src="/script/main22.mjs" type="module"></script>
</head>
<body>
<header>
<div class="gradient"></div>
</header>
<monster-state>
<img width="16" height="16" alt="tick" title="yes" src="data:image/gif;base64,R0lGODdhEAAQAMwAAPj7+FmhUYjNfGuxYYDJdYTIeanOpT+DOTuANXi/bGOrWj6CONzv2sPjv2Cm
V1unU4zPgI/Sg6DJnJ3ImTh8Mtbs00aNP1CZSGy0YqLEn47RgXW8amasW7XWsmmvX2iuXiwAAAAAEAAQAAAFVyAgjmRpnihqGCkpDQ
PbGkNUOFk6DZqgHCNGg2T4QAQBoIiRSAwBE4VA4FACKgkB5NGReASFZEmxsQ0whPDi9BiACYQAInXhwOUtgCUQoORFCGt/g4QAIQA7" id="tickyesdata-image-gi-4013311193"/>
<h1 class="deco">Bad xxxx</h1>
<p>The request was incorrect, the server could not process it.</p><p>
</p><div class="infobox">
<div>
<ul>
<li>Try submitting your<a id="yes-a-html" href="/a.html" title="Yes" hreflang="">request</a> again (sometimes this helps).</li>
<li>Contact support if you continue to have problems.</li>
<li>If you received this message as a result of a request to the server API, then check the structure
against the documentation.</li>
</ul>
<p>You can try the following steps:</p>
</div>
</div>
</monster-state>
</body></html>
\ No newline at end of file
<!DOCTYPE html><html lang="en"><head>
<style>
*:not(:defined) {
visibility: hidden;
}
</style>
<meta charset="utf-8"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<meta name="robots" content="noindex"/>
<link rel="icon" type="image/x-icon" href="/asset/icon/favicon.svg"/>
<meta name="theme-color" content="#c10000"/>
<link rel="apple-touch-icon" sizes="180x180" href="/asset/icon/apple-touch-icon.png"/>
<link rel="icon" type="image/png" sizes="32x32" href="/asset/icon/favicon-32x32.png"/>
<link rel="icon" type="image/png" sizes="16x16" href="/asset/icon/favicon-16x16.png"/>
<link rel="mask-icon" href="/asset/icon/safari-pinned-tab.svg" color="#fd1d1d"/>
<meta name="msapplication-TileImage" content="/asset/icon/mstile-144x144.png"/>
<meta name="msapplication-TileColor" content="#fd1d1d"/>
<title>TEST3</title>
<meta name="description" content="The 3request was malformed or invalid."/>
<meta name="author" content="schukai3 GmbH"/>
<link rel="icon" href="/favicon.ico"/>
<link rel="icon" href="/favicon.svg" type="image/svg+xml"/>
<link rel="apple-touch-icon" href="/apple-touch-icon.png"/>
<script id="mainscript" src="/script/main22.mjs" type="module"></script>
</head>
<body>
<header>
<div class="gradient"></div>
</header>
<monster-state>
<img width="16" height="16" alt="tick" title="yes" src="data:image/gif;base64,R0lGODdhEAAQAMwAAPj7+FmhUYjNfGuxYYDJdYTIeanOpT+DOTuANXi/bGOrWj6CONzv2sPjv2Cm
V1unU4zPgI/Sg6DJnJ3ImTh8Mtbs00aNP1CZSGy0YqLEn47RgXW8amasW7XWsmmvX2iuXiwAAAAAEAAQAAAFVyAgjmRpnihqGCkpDQ
PbGkNUOFk6DZqgHCNGg2T4QAQBoIiRSAwBE4VA4FACKgkB5NGReASFZEmxsQ0whPDi9BiACYQAInXhwOUtgCUQoORFCGt/g4QAIQA7" id="tickyesdata-image-gi-4013311193"/>
<h1 class="deco">Bad xxxx</h1>
<p>The request was incorrect, the server could not process it.</p><p>
</p><div class="infobox">
<div>
<ul>
<li>Try submitting your<a id="yes-a-html" href="/a.html" title="Yes" hreflang="">request</a> again (sometimes this helps).</li>
<li>Contact support if you continue to have problems.</li>
<li>If you received this message as a result of a request to the server API, then check the structure
against the documentation.</li>
</ul>
<p>You can try the following steps:</p>
</div>
</div>
</monster-state>
</body></html>
\ No newline at end of file
......@@ -29,6 +29,7 @@
<link rel="apple-touch-icon" href="/apple-touch-icon.png"/>
<script src="/script/main.mjs" type="module"></script>
</head>
<body>
......
......@@ -28,6 +28,18 @@
<link rel="icon" href="/favicon.svg" type="image/svg+xml"/>
<link rel="apple-touch-icon" href="/apple-touch-icon.png"/>
<script id="translations" type="application/json" data-monster-role="translation">
{
"key1": "value1",
"key2": "value2",
"key3": {
"one": "value3",
"two": "value4"
}
}
</script>
<script id="mainscript" src="/script/main22.mjs" type="module"></script>
</head>
......
test.html:
lang: en
title: Bad Request
test1.html:
export: de/test1.html
lang: de
title: TESTx
meta:
author: schukai GmbH
description: The request was malformed or invalid.
......@@ -14,12 +15,92 @@ test.html:
title: "yes"
anchors:
- id: yes-a-html
href: /b.html
href: /a.html
hreflang: ""
title: "Yes"
text:
- text: Bad xxxx
id: bad-xxxx
- text: The request was incorrect, the server could not process it.
id: the-request-was-inco-2640993422
- text: Try submitting your
id: try-submitting-your
- text: Contact support if you continue to have problems.
id: contact-support-if-y-3404332025
- text: |-
If you received this message as a result of a request to the server API, then check the structure
against the documentation.
id: if-you-received-this-423958995
- text: 'You can try the following steps:'
id: you-can-try-the-foll-3363859033
translations:
- id: translations
type: application/json
translations:
key1: value1 gfgf66
key2: value2 gg
key3:
one: value3 tgtgt
two: value4 trzrtz
test2.html:
export: en/test2.html
lang: en
title: TEST2
meta:
author: sch2ukai GmbH
description: The 2request was malformed or invalid.
images:
- id: tickyesdata-image-gi-4013311193
source: |-
data:image/gif;base64,R0lGODdhEAAQAMwAAPj7+FmhUYjNfGuxYYDJdYTIeanOpT+DOTuANXi/bGOrWj6CONzv2sPjv2Cm
V1unU4zPgI/Sg6DJnJ3ImTh8Mtbs00aNP1CZSGy0YqLEn47RgXW8amasW7XWsmmvX2iuXiwAAAAAEAAQAAAFVyAgjmRpnihqGCkpDQ
PbGkNUOFk6DZqgHCNGg2T4QAQBoIiRSAwBE4VA4FACKgkB5NGReASFZEmxsQ0whPDi9BiACYQAInXhwOUtgCUQoORFCGt/g4QAIQA7
alt: tick
title: "yes"
anchors:
- id: yes-a-html
href: /a.html
hreflang: ""
title: "Yes"
text:
- text: Bad xxxx
id: bad-xxxx
- text: The request was incorrect, the server could not process it.
id: the-request-was-inco-2640993422
- text: Try submitting your
id: try-submitting-your
- text: Contact support if you continue to have problems.
id: contact-support-if-y-3404332025
- text: |-
If you received this message as a result of a request to the server API, then check the structure
against the documentation.
id: if-you-received-this-423958995
- text: 'You can try the following steps:'
id: you-can-try-the-foll-3363859033
translations: []
test3.html:
export: en/test3.html
lang: en
title: TEST3
meta:
author: schukai3 GmbH
description: The 3request was malformed or invalid.
images:
- id: tickyesdata-image-gi-4013311193
source: |-
data:image/gif;base64,R0lGODdhEAAQAMwAAPj7+FmhUYjNfGuxYYDJdYTIeanOpT+DOTuANXi/bGOrWj6CONzv2sPjv2Cm
V1unU4zPgI/Sg6DJnJ3ImTh8Mtbs00aNP1CZSGy0YqLEn47RgXW8amasW7XWsmmvX2iuXiwAAAAAEAAQAAAFVyAgjmRpnihqGCkpDQ
PbGkNUOFk6DZqgHCNGg2T4QAQBoIiRSAwBE4VA4FACKgkB5NGReASFZEmxsQ0whPDi9BiACYQAInXhwOUtgCUQoORFCGt/g4QAIQA7
alt: tick
title: "yes"
anchors:
- id: yes-a-html
href: /a.html
hreflang: ""
title: "Yes"
text:
- text: Bad Request
id: bad-request
- text: Bad xxxx
id: bad-xxxx
- text: The request was incorrect, the server could not process it.
id: the-request-was-inco-2640993422
- text: Try submitting your
......@@ -32,3 +113,4 @@ test.html:
id: if-you-received-this-423958995
- text: 'You can try the following steps:'
id: you-can-try-the-foll-3363859033
translations: []
<!DOCTYPE html><html lang="de" data-attributes="lang path:lang"><head>
<style>
*:not(:defined) {
visibility: hidden;
}
</style>
<meta charset="utf-8"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<meta name="robots" content="noindex"/>
<link rel="icon" type="image/x-icon" href="/asset/icon/favicon.svg"/>
<meta name="theme-color" content="#c10000"/>
<link rel="apple-touch-icon" sizes="180x180" href="/asset/icon/apple-touch-icon.png"/>
<link rel="icon" type="image/png" sizes="32x32" href="/asset/icon/favicon-32x32.png"/>
<link rel="icon" type="image/png" sizes="16x16" href="/asset/icon/favicon-16x16.png"/>
<link rel="mask-icon" href="/asset/icon/safari-pinned-tab.svg" color="#fd1d1d"/>
<meta name="msapplication-TileImage" content="/asset/icon/mstile-144x144.png"/>
<meta name="msapplication-TileColor" content="#fd1d1d"/>
<title data-replace="path:title">TESTx</title>
<meta name="description" content="The request was malformed or invalid." data-attributes="content path:meta.description"/>
<meta name="author" content="schukai GmbH" data-attributes="content path:meta.author"/>
<link rel="icon" href="/favicon.ico"/>
<link rel="icon" href="/favicon.svg" type="image/svg+xml"/>
<link rel="apple-touch-icon" href="/apple-touch-icon.png"/>
<script id="translations" type="application/json" data-monster-role="translation" data-replace="path:translations.translations.content">
{
"key1": "value1",
"key2": "value2",
"key3": {
"one": "value3",
"two": "value4"
}
}
</script>
<script id="mainscript" src="/script/main22.mjs" type="module"></script>
</head>
<body>
<header>
<div class="gradient"></div>
</header>
<monster-state>
<img width="16" height="16" alt="tick" title="yes" src="data:image/gif;base64,R0lGODdhEAAQAMwAAPj7+FmhUYjNfGuxYYDJdYTIeanOpT+DOTuANXi/bGOrWj6CONzv2sPjv2Cm
V1unU4zPgI/Sg6DJnJ3ImTh8Mtbs00aNP1CZSGy0YqLEn47RgXW8amasW7XWsmmvX2iuXiwAAAAAEAAQAAAFVyAgjmRpnihqGCkpDQ
PbGkNUOFk6DZqgHCNGg2T4QAQBoIiRSAwBE4VA4FACKgkB5NGReASFZEmxsQ0whPDi9BiACYQAInXhwOUtgCUQoORFCGt/g4QAIQA7" id="tickyesdata-image-gi-4013311193" data-attributes="src path:content.tickyesdata-image-gi-4013311193.src,alt path:content.tickyesdata-image-gi-4013311193.alt,title path:content.tickyesdata-image-gi-4013311193.title"/>
<h1 class="deco"><span id="bad-xxxx" data-replace-self="path:text.bad-xxxx.text">Bad xxxx</span></h1>
<p><span id="the-request-was-inco-2640993422" data-replace-self="path:text.the-request-was-inco-2640993422.text">The request was incorrect, the server could not process it.
</span></p><p>
</p><div class="infobox">
<div>
<ul>
<li><span id="try-submitting-your" data-replace-self="path:text.try-submitting-your.text">Try submitting your </span><a href="/a.html" title="Yes" id="yes-a-html" data-attributes="href path:anchors.yes-a-html.href,title path:anchors.yes-a-html.title,hreflang path:anchors.yes-a-html.hreflang">request</a> again (sometimes this helps).</li>
<li><span id="contact-support-if-y-3404332025" data-replace-self="path:text.contact-support-if-y-3404332025.text">Contact support if you continue to have problems.</span></li>
<li><span id="if-you-received-this-423958995" data-replace-self="path:text.if-you-received-this-423958995.text">If you received this message as a result of a request to the server API, then check the structure
against the documentation.
</span></li>
</ul>
<p><span id="you-can-try-the-foll-3363859033" data-replace-self="path:text.you-can-try-the-foll-3363859033.text">You can try the following steps:</span></p>
</div>
</div>
</monster-state>
</body></html>
\ No newline at end of file
<!DOCTYPE html><html lang="en" data-attributes="lang path:lang"><head>
<style>
*:not(:defined) {
visibility: hidden;
}
</style>
<meta charset="utf-8"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<meta name="robots" content="noindex"/>
<link rel="icon" type="image/x-icon" href="/asset/icon/favicon.svg"/>
<meta name="theme-color" content="#c10000"/>
<link rel="apple-touch-icon" sizes="180x180" href="/asset/icon/apple-touch-icon.png"/>
<link rel="icon" type="image/png" sizes="32x32" href="/asset/icon/favicon-32x32.png"/>
<link rel="icon" type="image/png" sizes="16x16" href="/asset/icon/favicon-16x16.png"/>
<link rel="mask-icon" href="/asset/icon/safari-pinned-tab.svg" color="#fd1d1d"/>
<meta name="msapplication-TileImage" content="/asset/icon/mstile-144x144.png"/>
<meta name="msapplication-TileColor" content="#fd1d1d"/>
<title data-replace="path:title">TEST2</title>
<meta name="description" content="The 2request was malformed or invalid." data-attributes="content path:meta.description"/>
<meta name="author" content="sch2ukai GmbH" data-attributes="content path:meta.author"/>
<link rel="icon" href="/favicon.ico"/>
<link rel="icon" href="/favicon.svg" type="image/svg+xml"/>
<link rel="apple-touch-icon" href="/apple-touch-icon.png"/>
<script id="mainscript" src="/script/main22.mjs" type="module"></script>
</head>
<body>
<header>
<div class="gradient"></div>
</header>
<monster-state>
<img width="16" height="16" alt="tick" title="yes" src="data:image/gif;base64,R0lGODdhEAAQAMwAAPj7+FmhUYjNfGuxYYDJdYTIeanOpT+DOTuANXi/bGOrWj6CONzv2sPjv2Cm
V1unU4zPgI/Sg6DJnJ3ImTh8Mtbs00aNP1CZSGy0YqLEn47RgXW8amasW7XWsmmvX2iuXiwAAAAAEAAQAAAFVyAgjmRpnihqGCkpDQ
PbGkNUOFk6DZqgHCNGg2T4QAQBoIiRSAwBE4VA4FACKgkB5NGReASFZEmxsQ0whPDi9BiACYQAInXhwOUtgCUQoORFCGt/g4QAIQA7" id="tickyesdata-image-gi-4013311193" data-attributes="alt path:content.tickyesdata-image-gi-4013311193.alt,src path:content.tickyesdata-image-gi-4013311193.src,title path:content.tickyesdata-image-gi-4013311193.title"/>
<h1 class="deco"><span id="bad-xxxx" data-replace-self="path:text.bad-xxxx.text">Bad xxxx</span></h1>
<p><span id="the-request-was-inco-2640993422" data-replace-self="path:text.the-request-was-inco-2640993422.text">The request was incorrect, the server could not process it.
</span></p><p>
</p><div class="infobox">
<div>
<ul>
<li><span id="try-submitting-your" data-replace-self="path:text.try-submitting-your.text">Try submitting your </span><a href="/a.html" title="Yes" id="yes-a-html" data-attributes="href path:anchors.yes-a-html.href,title path:anchors.yes-a-html.title,hreflang path:anchors.yes-a-html.hreflang">request</a> again (sometimes this helps).</li>
<li><span id="contact-support-if-y-3404332025" data-replace-self="path:text.contact-support-if-y-3404332025.text">Contact support if you continue to have problems.</span></li>
<li><span id="if-you-received-this-423958995" data-replace-self="path:text.if-you-received-this-423958995.text">If you received this message as a result of a request to the server API, then check the structure
against the documentation.
</span></li>
</ul>
<p><span id="you-can-try-the-foll-3363859033" data-replace-self="path:text.you-can-try-the-foll-3363859033.text">You can try the following steps:</span></p>
</div>
</div>
</monster-state>
</body></html>
\ No newline at end of file
<!DOCTYPE html><html lang="en" data-attributes="lang path:lang"><head>
<style>
*:not(:defined) {
visibility: hidden;
}
</style>
<meta charset="utf-8"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<meta name="robots" content="noindex"/>
<link rel="icon" type="image/x-icon" href="/asset/icon/favicon.svg"/>
<meta name="theme-color" content="#c10000"/>
<link rel="apple-touch-icon" sizes="180x180" href="/asset/icon/apple-touch-icon.png"/>
<link rel="icon" type="image/png" sizes="32x32" href="/asset/icon/favicon-32x32.png"/>
<link rel="icon" type="image/png" sizes="16x16" href="/asset/icon/favicon-16x16.png"/>
<link rel="mask-icon" href="/asset/icon/safari-pinned-tab.svg" color="#fd1d1d"/>
<meta name="msapplication-TileImage" content="/asset/icon/mstile-144x144.png"/>
<meta name="msapplication-TileColor" content="#fd1d1d"/>
<title data-replace="path:title">TEST3</title>
<meta name="description" content="The 3request was malformed or invalid." data-attributes="content path:meta.description"/>
<meta name="author" content="schukai3 GmbH" data-attributes="content path:meta.author"/>
<link rel="icon" href="/favicon.ico"/>
<link rel="icon" href="/favicon.svg" type="image/svg+xml"/>
<link rel="apple-touch-icon" href="/apple-touch-icon.png"/>
<script id="mainscript" src="/script/main22.mjs" type="module"></script>
</head>
<body>
<header>
<div class="gradient"></div>
</header>
<monster-state>
<img width="16" height="16" alt="tick" title="yes" src="data:image/gif;base64,R0lGODdhEAAQAMwAAPj7+FmhUYjNfGuxYYDJdYTIeanOpT+DOTuANXi/bGOrWj6CONzv2sPjv2Cm
V1unU4zPgI/Sg6DJnJ3ImTh8Mtbs00aNP1CZSGy0YqLEn47RgXW8amasW7XWsmmvX2iuXiwAAAAAEAAQAAAFVyAgjmRpnihqGCkpDQ
PbGkNUOFk6DZqgHCNGg2T4QAQBoIiRSAwBE4VA4FACKgkB5NGReASFZEmxsQ0whPDi9BiACYQAInXhwOUtgCUQoORFCGt/g4QAIQA7" id="tickyesdata-image-gi-4013311193" data-attributes="alt path:content.tickyesdata-image-gi-4013311193.alt,src path:content.tickyesdata-image-gi-4013311193.src,title path:content.tickyesdata-image-gi-4013311193.title"/>
<h1 class="deco"><span id="bad-xxxx" data-replace-self="path:text.bad-xxxx.text">Bad xxxx</span></h1>
<p><span id="the-request-was-inco-2640993422" data-replace-self="path:text.the-request-was-inco-2640993422.text">The request was incorrect, the server could not process it.
</span></p><p>
</p><div class="infobox">
<div>
<ul>
<li><span id="try-submitting-your" data-replace-self="path:text.try-submitting-your.text">Try submitting your </span><a href="/a.html" title="Yes" id="yes-a-html" data-attributes="href path:anchors.yes-a-html.href,title path:anchors.yes-a-html.title,hreflang path:anchors.yes-a-html.hreflang">request</a> again (sometimes this helps).</li>
<li><span id="contact-support-if-y-3404332025" data-replace-self="path:text.contact-support-if-y-3404332025.text">Contact support if you continue to have problems.</span></li>
<li><span id="if-you-received-this-423958995" data-replace-self="path:text.if-you-received-this-423958995.text">If you received this message as a result of a request to the server API, then check the structure
against the documentation.
</span></li>
</ul>
<p><span id="you-can-try-the-foll-3363859033" data-replace-self="path:text.you-can-try-the-foll-3363859033.text">You can try the following steps:</span></p>
</div>
</div>
</monster-state>
</body></html>
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment