diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..a65166b --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +simplytranslate diff --git a/Dockerfile b/Dockerfile index a975b8d..b218848 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,7 +1,6 @@ FROM golang:1.20-alpine COPY . . -WORKDIR web/ RUN go mod download RUN go build -o simplytranslate EXPOSE 5000 diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..322e99e --- /dev/null +++ b/Makefile @@ -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 diff --git a/engines/engine.go b/engines/engine.go index be19891..df3bc18 100644 --- a/engines/engine.go +++ b/engines/engine.go @@ -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{}, } diff --git a/engines/go.mod b/engines/go.mod deleted file mode 100644 index 5798676..0000000 --- a/engines/go.mod +++ /dev/null @@ -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 -) diff --git a/engines/go.sum b/engines/go.sum deleted file mode 100644 index 0850893..0000000 --- a/engines/go.sum +++ /dev/null @@ -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= diff --git a/go.mod b/go.mod new file mode 100644 index 0000000..85dec44 --- /dev/null +++ b/go.mod @@ -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 diff --git a/web/go.sum b/go.sum similarity index 83% rename from web/go.sum rename to go.sum index ecfb273..70858b6 100644 --- a/web/go.sum +++ b/go.sum @@ -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= diff --git a/legal_notice.txt b/legal_notice.txt index 16ec6dd..2040a34 100644 --- a/legal_notice.txt +++ b/legal_notice.txt @@ -2,4 +2,5 @@ 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. \ No newline at end of file +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. + diff --git a/web/static/LICENSE b/static/LICENSE similarity index 100% rename from web/static/LICENSE rename to static/LICENSE diff --git a/web/static/favicon.ico b/static/favicon.ico similarity index 100% rename from web/static/favicon.ico rename to static/favicon.ico diff --git a/web/static/favicon.svg b/static/favicon.svg similarity index 100% rename from web/static/favicon.svg rename to static/favicon.svg diff --git a/web/static/favicon128x128.png b/static/favicon128x128.png similarity index 100% rename from web/static/favicon128x128.png rename to static/favicon128x128.png diff --git a/web/static/script.js b/static/script.js similarity index 100% rename from web/static/script.js rename to static/script.js diff --git a/web/static/style.css b/static/style.css similarity index 100% rename from web/static/style.css rename to static/style.css diff --git a/web/views/index.html b/views/index.html similarity index 100% rename from web/views/index.html rename to views/index.html diff --git a/web/go.mod b/web/go.mod deleted file mode 100644 index 6f5cf9a..0000000 --- a/web/go.mod +++ /dev/null @@ -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 diff --git a/web/main.go b/web/main.go deleted file mode 100644 index b4e2495..0000000 --- a/web/main.go +++ /dev/null @@ -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) -}