Reorganized the codebase, add support for flag modus operandi
Signed-off-by: Izuru Yakumo <yakumo.izuru@chaotic.ninja> git-svn-id: file:///srv/svn/repo/mai/trunk@48 e410bdd4-646f-c54f-a7ce-fffcc4f439ae
This commit is contained in:
parent
88a86eec8a
commit
08278eebad
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
@ -0,0 +1 @@
|
||||
simplytranslate
|
@ -1,7 +1,6 @@
|
||||
FROM golang:1.20-alpine
|
||||
|
||||
COPY . .
|
||||
WORKDIR web/
|
||||
RUN go mod download
|
||||
RUN go build -o simplytranslate
|
||||
EXPOSE 5000
|
||||
|
12
Makefile
Normal file
12
Makefile
Normal file
@ -0,0 +1,12 @@
|
||||
PREFIX ?= /usr/local
|
||||
|
||||
build:
|
||||
go build -x -v ./cmd/simplytranslate
|
||||
install:
|
||||
install -Dm0755 simplytranslate ${DESTDIR}${PREFIX}/bin/simplytranslate
|
||||
mkdir -p ${DESTDIR}${PREFIX}/share/simplytranslate
|
||||
cp -R static views ${DESTDIR}${PREFIX}/share/simplytranslate
|
||||
@echo "Remember to launch the program with -s ${DESTDIR}${PREFIX}/share/simplytranslate/static -t ${DESTDIR}${PREFIX}/share/simplytranslate/views"
|
||||
uninstall:
|
||||
rm -f ${DESTDIR}${PREFIX}/bin/simplytranslate
|
||||
rm -rf ${DESTDIR}${PREFIX}/share/simplytranslate
|
@ -19,7 +19,7 @@ type Language map[string]string
|
||||
|
||||
var Engines = map[string]Engine{
|
||||
"google": &GoogleTranslate{},
|
||||
// "icibia": &ICIBA{},
|
||||
// "libre": &LibreTranslate{},
|
||||
// "iciba": &ICIBA{},
|
||||
// "libre": &LibreTranslate{},
|
||||
"reverso": &Reverso{},
|
||||
}
|
||||
|
@ -1,8 +0,0 @@
|
||||
module codeberg.org/SimpleWeb/SimplyTranslate/engines
|
||||
|
||||
go 1.16
|
||||
|
||||
require (
|
||||
github.com/PuerkitoBio/goquery v1.8.1
|
||||
golang.org/x/net v0.8.0 // indirect
|
||||
)
|
@ -1,43 +0,0 @@
|
||||
github.com/PuerkitoBio/goquery v1.8.1 h1:uQxhNlArOIdbrH1tr0UXwdVFgDcZDrZVdcpygAcwmWM=
|
||||
github.com/PuerkitoBio/goquery v1.8.1/go.mod h1:Q8ICL1kNUJ2sXGoAhPGUdYDJvgQgHzJsnnd3H7Ho5jQ=
|
||||
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/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY=
|
||||
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
|
||||
golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
|
||||
golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4=
|
||||
golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
|
||||
golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
|
||||
golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
|
||||
golang.org/x/net v0.0.0-20210916014120-12bc252f5db8/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
|
||||
golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=
|
||||
golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs=
|
||||
golang.org/x/net v0.7.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs=
|
||||
golang.org/x/net v0.8.0 h1:Zrh2ngAOFYneWTAIAPethzeaQLuHwhuBkuV6ZiRnUaQ=
|
||||
golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc=
|
||||
golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||
golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||
golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||
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-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
|
||||
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
|
||||
golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k=
|
||||
golang.org/x/term v0.6.0/go.mod h1:m6U89DPEgQRMq3DNkDClhWw02AUbt2daBVO4cn4Hv9U=
|
||||
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
||||
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
|
||||
golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
|
||||
golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
|
||||
golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
|
||||
golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8=
|
||||
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
|
||||
golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
|
||||
golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc=
|
||||
golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU=
|
||||
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
30
go.mod
Normal file
30
go.mod
Normal file
@ -0,0 +1,30 @@
|
||||
module git.chaotic.ninja/yakumo.izuru/simplytranslate-mod
|
||||
|
||||
go 1.20
|
||||
|
||||
require (
|
||||
codeberg.org/SimpleWeb/SimplyTranslate/engines v0.0.0-20230920112526-526a2c0ed1dd
|
||||
github.com/PuerkitoBio/goquery v1.8.1
|
||||
github.com/gofiber/fiber/v2 v2.49.2
|
||||
github.com/gofiber/template/html/v2 v2.0.5
|
||||
)
|
||||
|
||||
require (
|
||||
github.com/andybalholm/brotli v1.0.5 // indirect
|
||||
github.com/andybalholm/cascadia v1.3.1 // indirect
|
||||
github.com/gofiber/template v1.8.2 // indirect
|
||||
github.com/gofiber/utils v1.1.0 // indirect
|
||||
github.com/google/uuid v1.3.1 // indirect
|
||||
github.com/klauspost/compress v1.16.7 // indirect
|
||||
github.com/mattn/go-colorable v0.1.13 // indirect
|
||||
github.com/mattn/go-isatty v0.0.19 // indirect
|
||||
github.com/mattn/go-runewidth v0.0.15 // indirect
|
||||
github.com/rivo/uniseg v0.2.0 // indirect
|
||||
github.com/valyala/bytebufferpool v1.0.0 // indirect
|
||||
github.com/valyala/fasthttp v1.49.0 // indirect
|
||||
github.com/valyala/tcplisten v1.0.0 // indirect
|
||||
golang.org/x/net v0.8.0 // indirect
|
||||
golang.org/x/sys v0.12.0 // indirect
|
||||
)
|
||||
|
||||
replace codeberg.org/SimpleWeb/SimplyTranslate/engines v0.0.0 => ./engines
|
@ -1,11 +1,13 @@
|
||||
codeberg.org/SimpleWeb/SimplyTranslate/engines v0.0.0-20230920112526-526a2c0ed1dd h1:7of7Y4s8COfEcCqTIclI+EgObPRdhX/H4o2cXFGBymY=
|
||||
codeberg.org/SimpleWeb/SimplyTranslate/engines v0.0.0-20230920112526-526a2c0ed1dd/go.mod h1:sEsqyflt+UgTVk1Z9hcwEexilsPOosOUPX6dlffsA1w=
|
||||
github.com/PuerkitoBio/goquery v1.8.1 h1:uQxhNlArOIdbrH1tr0UXwdVFgDcZDrZVdcpygAcwmWM=
|
||||
github.com/PuerkitoBio/goquery v1.8.1/go.mod h1:Q8ICL1kNUJ2sXGoAhPGUdYDJvgQgHzJsnnd3H7Ho5jQ=
|
||||
github.com/andybalholm/brotli v1.0.5 h1:8uQZIdzKmjc/iuPu7O2ioW48L81FgatrcpfFmiq/cCs=
|
||||
github.com/andybalholm/brotli v1.0.5/go.mod h1:fO7iG3H7G2nSZ7m0zPUDn85XEX2GTukHGRSepvi9Eig=
|
||||
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/gofiber/fiber/v2 v2.49.0 h1:xBVG2c66GDcWfww56xHvMn52Q0XX7UrSvjj6MD8/5EE=
|
||||
github.com/gofiber/fiber/v2 v2.49.0/go.mod h1:oxpt7wQaEYgdDmq7nMxCGhilYicBLFnZ+jQSJcQDlSE=
|
||||
github.com/gofiber/fiber/v2 v2.49.2 h1:ONEN3/Vc+dUCxxDgZZwpqvhISgHqb+bu+isBiEyKEQs=
|
||||
github.com/gofiber/fiber/v2 v2.49.2/go.mod h1:gNsKnyrmfEWFpJxQAV0qvW6l70K1dZGno12oLtukcts=
|
||||
github.com/gofiber/template v1.8.2 h1:PIv9s/7Uq6m+Fm2MDNd20pAFFKt5wWs7ZBd8iV9pWwk=
|
||||
github.com/gofiber/template v1.8.2/go.mod h1:bs/2n0pSNPOkRa5VJ8zTIvedcI/lEYxzV3+YPXdBvq8=
|
||||
github.com/gofiber/template/html/v2 v2.0.5 h1:BKLJ6Qr940NjntbGmpO3zVa4nFNGDCi/IfUiDB9OC20=
|
||||
@ -14,7 +16,6 @@ github.com/gofiber/utils v1.1.0 h1:vdEBpn7AzIUJRhe+CiTOJdUcTg4Q9RK+pEa0KPbLdrM=
|
||||
github.com/gofiber/utils v1.1.0/go.mod h1:poZpsnhBykfnY1Mc0KeEa6mSHrS3dV0+oBWyeQmb2e0=
|
||||
github.com/google/uuid v1.3.1 h1:KjJaJ9iWZ3jOFZIf1Lqf4laDRCasjl0BCmnEGxkdLb4=
|
||||
github.com/google/uuid v1.3.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
|
||||
github.com/klauspost/compress v1.16.3/go.mod h1:ntbaceVETuRiXiv4DpjP66DpAtAGkEQskQzEyD//IeE=
|
||||
github.com/klauspost/compress v1.16.7 h1:2mk3MPGNzKyxErAw8YaohYh69+pa4sIQSC0fPGCFR9I=
|
||||
github.com/klauspost/compress v1.16.7/go.mod h1:ntbaceVETuRiXiv4DpjP66DpAtAGkEQskQzEyD//IeE=
|
||||
github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA=
|
||||
@ -24,28 +25,23 @@ github.com/mattn/go-isatty v0.0.19 h1:JITubQf0MOLdlGRuRq+jtsDlekdYPia9ZFsB8h/APP
|
||||
github.com/mattn/go-isatty v0.0.19/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y=
|
||||
github.com/mattn/go-runewidth v0.0.15 h1:UNAjwbU9l54TA3KzvqLGxwWjHmMgBUVhBiTjelZgg3U=
|
||||
github.com/mattn/go-runewidth v0.0.15/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w=
|
||||
github.com/philhofer/fwd v1.1.2/go.mod h1:qkPdfjR2SIEbspLqpe1tO4n5yICnr2DY7mqEx2tUTP0=
|
||||
github.com/rivo/uniseg v0.2.0 h1:S1pD9weZBuJdFmowNwbpi7BJ8TNftyUImj/0WQi72jY=
|
||||
github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc=
|
||||
github.com/tinylib/msgp v1.1.8/go.mod h1:qkpG+2ldGg4xRFmx+jfTvZPxfGFhi64BcnL9vkCm/Tw=
|
||||
github.com/valyala/bytebufferpool v1.0.0 h1:GqA5TC/0021Y/b9FG4Oi9Mr3q7XYx6KllzawFIhcdPw=
|
||||
github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc=
|
||||
github.com/valyala/fasthttp v1.48.0 h1:oJWvHb9BIZToTQS3MuQ2R3bJZiNSa2KiNdeI8A+79Tc=
|
||||
github.com/valyala/fasthttp v1.48.0/go.mod h1:k2zXd82h/7UZc3VOdJ2WaUqt1uZ/XpXAfE9i+HBC3lA=
|
||||
github.com/valyala/fasthttp v1.49.0 h1:9FdvCpmxB74LH4dPb7IJ1cOSsluR07XG3I1txXWwJpE=
|
||||
github.com/valyala/fasthttp v1.49.0/go.mod h1:k2zXd82h/7UZc3VOdJ2WaUqt1uZ/XpXAfE9i+HBC3lA=
|
||||
github.com/valyala/tcplisten v1.0.0 h1:rBHj/Xf+E1tRGZyWIWwJDiRY0zc1Js+CV5DqwacVSA8=
|
||||
github.com/valyala/tcplisten v1.0.0/go.mod h1:T0xQ8SeCZGxckz9qRXTfG43PvQ/mcWh7FwZEA7Ioqkc=
|
||||
github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY=
|
||||
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
|
||||
golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
|
||||
golang.org/x/crypto v0.7.0/go.mod h1:pYwdfH91IfpZVANVyUOhSIPZaFoJGxTFbZhFTx+dXZU=
|
||||
golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4=
|
||||
golang.org/x/mod v0.7.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
|
||||
golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
|
||||
golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
|
||||
golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
|
||||
golang.org/x/net v0.0.0-20210916014120-12bc252f5db8/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
|
||||
golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=
|
||||
golang.org/x/net v0.3.0/go.mod h1:MBQ8lrhLObU/6UmLb4fmbmk5OcyYmqtbGd/9yIeKjEE=
|
||||
golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs=
|
||||
golang.org/x/net v0.7.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs=
|
||||
golang.org/x/net v0.8.0 h1:Zrh2ngAOFYneWTAIAPethzeaQLuHwhuBkuV6ZiRnUaQ=
|
||||
@ -60,26 +56,22 @@ golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBc
|
||||
golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/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/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.11.0 h1:eG7RXZHdqOJ1i+0lgLgCpSXAp6M3LYlAo6osgSi0xOM=
|
||||
golang.org/x/sys v0.11.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.12.0 h1:CM0HF96J0hcLAwsHPJZjfdNzs0gftsLfgKt57wWHJ0o=
|
||||
golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
|
||||
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
|
||||
golang.org/x/term v0.3.0/go.mod h1:q750SLmJuPmVoN1blW3UFBPREJfb1KmY3vwxfr+nFDA=
|
||||
golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k=
|
||||
golang.org/x/term v0.6.0/go.mod h1:m6U89DPEgQRMq3DNkDClhWw02AUbt2daBVO4cn4Hv9U=
|
||||
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
||||
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
|
||||
golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
|
||||
golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
|
||||
golang.org/x/text v0.5.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
|
||||
golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
|
||||
golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8=
|
||||
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
|
||||
golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
|
||||
golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc=
|
||||
golang.org/x/tools v0.4.0/go.mod h1:UE5sM2OK9E/d67R0ANs2xJizIymRP5gJU295PvKXxjQ=
|
||||
golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU=
|
||||
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
@ -3,3 +3,4 @@ SimplyTranslate does not host any content. All content shown on any SimplyTransl
|
||||
Trademarks belong to their respective owners. Google Translate is a trademark of Google LLC. DeepL is a trademark of DeepL SE. Reverso is a trademark of Reverso. LibreTranslate is a trademark of LibreTranslate.
|
||||
|
||||
The creators of this repository assume no liability for the accuracy and timeliness of any information provided above. Trademark owner information was researched to the best of the author's knowledge at the time of curation and may be outdated or incorrect.
|
||||
|
||||
|
Before Width: | Height: | Size: 22 KiB After Width: | Height: | Size: 22 KiB |
Before Width: | Height: | Size: 26 KiB After Width: | Height: | Size: 26 KiB |
Before Width: | Height: | Size: 6.6 KiB After Width: | Height: | Size: 6.6 KiB |
11
web/go.mod
11
web/go.mod
@ -1,11 +0,0 @@
|
||||
module codeberg.org/SimpleWeb/SimplyTranslate/web
|
||||
|
||||
go 1.16
|
||||
|
||||
require (
|
||||
codeberg.org/SimpleWeb/SimplyTranslate/engines v0.0.0
|
||||
github.com/gofiber/fiber/v2 v2.49.0 // indirect
|
||||
github.com/gofiber/template/html/v2 v2.0.5
|
||||
)
|
||||
|
||||
replace codeberg.org/SimpleWeb/SimplyTranslate/engines v0.0.0 => ../engines
|
230
web/main.go
230
web/main.go
@ -1,230 +0,0 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"net/http"
|
||||
"net/url"
|
||||
"os"
|
||||
"time"
|
||||
|
||||
"codeberg.org/SimpleWeb/SimplyTranslate/engines"
|
||||
"github.com/gofiber/fiber/v2"
|
||||
"github.com/gofiber/template/html/v2"
|
||||
)
|
||||
|
||||
func main() {
|
||||
engine := html.New("./views", ".html")
|
||||
engine.AddFunc("inc", func(i int) int { return i + 1 })
|
||||
|
||||
app := fiber.New(fiber.Config{
|
||||
Views: engine,
|
||||
})
|
||||
|
||||
app.All("/", func(c *fiber.Ctx) error {
|
||||
engine := c.Cookies("engine")
|
||||
if c.Query("engine") != "" {
|
||||
engine = c.Query("engine")
|
||||
}
|
||||
if _, ok := engines.Engines[engine]; !ok {
|
||||
engine = "google"
|
||||
}
|
||||
targetLanguages, err := engines.Engines[engine].TargetLanguages()
|
||||
if err != nil {
|
||||
return c.SendStatus(500)
|
||||
}
|
||||
sourceLanguages, err := engines.Engines[engine].SourceLanguages()
|
||||
if err != nil {
|
||||
return c.SendStatus(500)
|
||||
}
|
||||
originalText := ""
|
||||
translatedText := ""
|
||||
from := ""
|
||||
to := ""
|
||||
ttsFrom := ""
|
||||
ttsTo := ""
|
||||
sourceLanguage := ""
|
||||
|
||||
var translation engines.TranslationResult
|
||||
if c.Method() == "POST" {
|
||||
from = c.FormValue("from")
|
||||
to = c.FormValue("to")
|
||||
originalText = c.FormValue("text")
|
||||
if result, err := engines.Engines[engine].Translate(originalText, from, to); err != nil {
|
||||
return c.SendStatus(500)
|
||||
} else {
|
||||
translatedText = result.TranslatedText
|
||||
translation = result
|
||||
sourceLanguage = result.SourceLanguage
|
||||
}
|
||||
|
||||
ttsFromURL, _ := url.Parse("api/tts")
|
||||
fromQuery := url.Values{}
|
||||
fromQuery.Add("lang", from)
|
||||
fromQuery.Add("text", originalText)
|
||||
ttsFromURL.RawQuery = fromQuery.Encode()
|
||||
ttsFrom = ttsFromURL.String()
|
||||
|
||||
ttsToURL, _ := url.Parse("api/tts")
|
||||
toQuery := url.Values{}
|
||||
toQuery.Add("lang", to)
|
||||
toQuery.Add("text", translatedText)
|
||||
ttsToURL.RawQuery = toQuery.Encode()
|
||||
ttsTo = ttsToURL.String()
|
||||
|
||||
fromCookie := new(fiber.Cookie)
|
||||
fromCookie.Name = "from"
|
||||
fromCookie.Value = from
|
||||
fromCookie.Expires = time.Now().Add(time.Hour * 24 * 365)
|
||||
c.Cookie(fromCookie)
|
||||
|
||||
toCookie := new(fiber.Cookie)
|
||||
toCookie.Name = "to"
|
||||
toCookie.Value = to
|
||||
toCookie.Expires = time.Now().Add(time.Hour * 24 * 365)
|
||||
c.Cookie(toCookie)
|
||||
|
||||
engineCookie := new(fiber.Cookie)
|
||||
engineCookie.Name = "engine"
|
||||
engineCookie.Value = engine
|
||||
engineCookie.Expires = time.Now().Add(time.Hour * 24 * 365)
|
||||
c.Cookie(engineCookie)
|
||||
} else if c.Method() == "GET" {
|
||||
from = c.Cookies("from")
|
||||
to = c.Cookies("to")
|
||||
} else {
|
||||
return c.SendStatus(400)
|
||||
}
|
||||
|
||||
if from == "" {
|
||||
from = "auto"
|
||||
}
|
||||
|
||||
enginesNames := map[string]string{}
|
||||
for k, v := range engines.Engines {
|
||||
enginesNames[k] = v.DisplayName()
|
||||
}
|
||||
|
||||
return c.Render("index", fiber.Map{
|
||||
"Engine": engine,
|
||||
"enginesNames": enginesNames,
|
||||
"SourceLanguages": sourceLanguages,
|
||||
"TargetLanguages": targetLanguages,
|
||||
"OriginalText": originalText,
|
||||
"Translation": translation,
|
||||
"From": from,
|
||||
"To": to,
|
||||
"TtsFrom": ttsFrom,
|
||||
"TtsTo": ttsTo,
|
||||
"SourceLanguage": sourceLanguage,
|
||||
})
|
||||
})
|
||||
|
||||
app.All("/api/translate", func(c *fiber.Ctx) error {
|
||||
from := ""
|
||||
to := ""
|
||||
engine := ""
|
||||
text := ""
|
||||
if c.Method() == "GET" {
|
||||
engine = c.Query("engine")
|
||||
text = c.Query("text")
|
||||
from = c.Query("from")
|
||||
to = c.Query("to")
|
||||
} else if c.Method() == "POST" {
|
||||
engine = c.FormValue("engine")
|
||||
text = c.FormValue("text")
|
||||
from = c.FormValue("from")
|
||||
to = c.FormValue("to")
|
||||
} else {
|
||||
return c.SendStatus(400)
|
||||
}
|
||||
if _, ok := engines.Engines[engine]; !ok || engine == "" {
|
||||
engine = "google"
|
||||
}
|
||||
if to == "" {
|
||||
return c.SendStatus(400)
|
||||
}
|
||||
if result, err := engines.Engines[engine].Translate(text, from, to); err != nil {
|
||||
return c.SendStatus(500)
|
||||
} else {
|
||||
return c.JSON(result)
|
||||
}
|
||||
})
|
||||
|
||||
app.Get("/api/source_languages", func(c *fiber.Ctx) error {
|
||||
engine := c.Query("engine")
|
||||
if _, ok := engines.Engines[engine]; !ok || engine == "" {
|
||||
engine = "google"
|
||||
}
|
||||
if result, err := engines.Engines[engine].SourceLanguages(); err != nil {
|
||||
return c.SendStatus(500)
|
||||
} else {
|
||||
return c.JSON(result)
|
||||
}
|
||||
})
|
||||
|
||||
app.Get("/api/target_languages", func(c *fiber.Ctx) error {
|
||||
engine := c.Query("engine")
|
||||
if _, ok := engines.Engines[engine]; !ok || engine == "" {
|
||||
engine = "google"
|
||||
}
|
||||
if result, err := engines.Engines[engine].TargetLanguages(); err != nil {
|
||||
return c.SendStatus(500)
|
||||
} else {
|
||||
return c.JSON(result)
|
||||
}
|
||||
})
|
||||
|
||||
app.Get("/api/tts", func(c *fiber.Ctx) error {
|
||||
engine := c.Query("engine")
|
||||
if _, ok := engines.Engines[engine]; !ok || engine == "" {
|
||||
engine = "google"
|
||||
}
|
||||
|
||||
text := c.Query("text")
|
||||
if text == "" {
|
||||
return c.SendStatus(400)
|
||||
}
|
||||
|
||||
lang := c.Query("lang")
|
||||
|
||||
if url, err := engines.Engines[engine].Tts(text, lang); err != nil {
|
||||
return c.SendStatus(500)
|
||||
} else {
|
||||
if response, err := http.Get(url); err != nil {
|
||||
return c.SendStatus(500)
|
||||
} else {
|
||||
defer response.Body.Close()
|
||||
var buf bytes.Buffer
|
||||
response.Write(&buf)
|
||||
c.Context().SetContentType("audio/mpeg")
|
||||
return c.Send(buf.Bytes())
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
app.Post("/switchlanguages", func(c *fiber.Ctx) error {
|
||||
if c.Cookies("from") != "" {
|
||||
fromCookie := new(fiber.Cookie)
|
||||
fromCookie.Name = "from"
|
||||
fromCookie.Value = c.Cookies("to")
|
||||
fromCookie.Expires = time.Now().Add(24 * time.Hour * 365)
|
||||
|
||||
toCookie := new(fiber.Cookie)
|
||||
toCookie.Name = "to"
|
||||
toCookie.Value = c.Cookies("from")
|
||||
toCookie.Expires = time.Now().Add(24 * time.Hour * 365)
|
||||
|
||||
c.Cookie(fromCookie)
|
||||
c.Cookie(toCookie)
|
||||
}
|
||||
return c.Redirect("/")
|
||||
})
|
||||
|
||||
app.Static("/static", "./static")
|
||||
|
||||
address := os.Getenv("ADDRESS")
|
||||
if address == "" {
|
||||
address = ":5000"
|
||||
}
|
||||
app.Listen(address)
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user