Made it work
This commit is contained in:
parent
2817cd1c22
commit
a359e0b5e1
2
.gitignore
vendored
2
.gitignore
vendored
@ -1,3 +1,3 @@
|
||||
/node_modules/
|
||||
|
||||
/result/*
|
||||
|
||||
|
5
README.md
Normal file
5
README.md
Normal file
@ -0,0 +1,5 @@
|
||||
## Polytranslatia
|
||||
### Easily make your own language file for the Polytopia by Midjiwan.
|
||||
|
||||
bash```npm install
|
||||
npm start```
|
33
css/styles.css
Normal file
33
css/styles.css
Normal file
@ -0,0 +1,33 @@
|
||||
body {
|
||||
font-family: Arial, Helvetica, sans-serif;
|
||||
text-align: center;
|
||||
max-width: 500px;
|
||||
position: relative;
|
||||
margin: 0 auto;
|
||||
}
|
||||
|
||||
body h1 {
|
||||
font-weight: lighter;
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
body h3 {
|
||||
margin-top: 0;
|
||||
font-weight: lighter;
|
||||
}
|
||||
|
||||
body input {
|
||||
margin: 5px;
|
||||
}
|
||||
|
||||
body footer {
|
||||
position: fixed;
|
||||
width: 220px;
|
||||
left: calc(50% - 110px);
|
||||
bottom: 10px;
|
||||
}
|
||||
|
||||
body footer a {
|
||||
color: black;
|
||||
}
|
||||
/*# sourceMappingURL=styles.css.map */
|
9
css/styles.css.map
Normal file
9
css/styles.css.map
Normal file
@ -0,0 +1,9 @@
|
||||
{
|
||||
"version": 3,
|
||||
"mappings": "AAAA,AAAA,IAAI,CAAC;EACD,WAAW,EAAE,4BAA4B;EACzC,UAAU,EAAE,MAAM;EAClB,SAAS,EAAE,KAAK;EAChB,QAAQ,EAAE,QAAQ;EAClB,MAAM,EAAE,MAAM;CAyBjB;;AA9BD,AAOI,IAPA,CAOA,EAAE,CAAC;EACC,WAAW,EAAE,OAAO;EACpB,aAAa,EAAE,CAAC;CACnB;;AAVL,AAYI,IAZA,CAYA,EAAE,CAAC;EACC,UAAU,EAAE,CAAC;EACb,WAAW,EAAE,OAAO;CACvB;;AAfL,AAiBI,IAjBA,CAiBA,KAAK,CAAC;EACF,MAAM,EAAE,GAAG;CACd;;AAnBL,AAqBI,IArBA,CAqBA,MAAM,CAAC;EACH,QAAQ,EAAE,KAAK;EACf,KAAK,EAAE,KAAK;EACZ,IAAI,EAAE,iBAAiB;EACvB,MAAM,EAAE,IAAI;CAIf;;AA7BL,AA0BQ,IA1BJ,CAqBA,MAAM,CAKF,CAAC,CAAC;EACE,KAAK,EAAE,KAAK;CACf",
|
||||
"sources": [
|
||||
"styles.scss"
|
||||
],
|
||||
"names": [],
|
||||
"file": "styles.css"
|
||||
}
|
31
css/styles.scss
Normal file
31
css/styles.scss
Normal file
@ -0,0 +1,31 @@
|
||||
body {
|
||||
font-family: Arial, Helvetica, sans-serif;
|
||||
text-align: center;
|
||||
max-width: 500px;
|
||||
position: relative;
|
||||
margin: 0 auto;
|
||||
|
||||
h1 {
|
||||
font-weight: lighter;
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
h3 {
|
||||
margin-top: 0;
|
||||
font-weight: lighter;
|
||||
}
|
||||
|
||||
input {
|
||||
margin: 5px;
|
||||
}
|
||||
|
||||
footer {
|
||||
position: fixed;
|
||||
width: 220px;
|
||||
left: calc(50% - 110px);
|
||||
bottom: 10px;
|
||||
a {
|
||||
color: black;
|
||||
}
|
||||
}
|
||||
}
|
36
index.html
Normal file
36
index.html
Normal file
@ -0,0 +1,36 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>Poliatranslatia</title>
|
||||
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
|
||||
<link rel="stylesheet" href="/css/styles.css">
|
||||
</head>
|
||||
<body>
|
||||
<h1>Poliatranslatia</h1>
|
||||
<h3>Easily make your own language file for the Polytopia by Midjiwan.</h3>
|
||||
<form action="/" method="POST">
|
||||
<label for="sourceUrl">Source JSON:</label><br>
|
||||
<input name="sourceUrl" id="sourceUrl" type="text" placeholder="URL to source JSON" required="true"><br>
|
||||
<button id="useDefault">Use default en_US</button><br><br>
|
||||
|
||||
<label for="target">Target Language:</label><br>
|
||||
<input type="target" name="target" id="target" required="true"><br>
|
||||
|
||||
<button type="submit">Submit</button>
|
||||
</form>
|
||||
|
||||
<script>
|
||||
$('#useDefault').on('click', function(e) {
|
||||
e.preventDefault();
|
||||
$('#sourceUrl').val("http://midjiwan.com/lang/en_US.json");
|
||||
});
|
||||
</script>
|
||||
|
||||
<footer>
|
||||
Made by McArn<br>
|
||||
Powered by <a href="http://translate.yandex.com/">Yandex.Translate</a>
|
||||
</footer>
|
||||
</body>
|
||||
</html>
|
85
index.js
85
index.js
@ -0,0 +1,85 @@
|
||||
const express = require('express')
|
||||
const app = express()
|
||||
const axios = require('axios').default;
|
||||
const fs = require('fs');
|
||||
var mustacheExpress = require('mustache-express');
|
||||
|
||||
const port = 7659;
|
||||
const apiKey = "trnsl.1.1.20200219T163804Z.dd385eb08e22b0a9.628dfdf2e50cf9faa61898cb7195740bb3ac3b86";
|
||||
|
||||
// Register '.mustache' extension with The Mustache Express
|
||||
app.engine('mustache', mustacheExpress());
|
||||
|
||||
app.set('view engine', 'mustache');
|
||||
app.set('views', __dirname + '/views');
|
||||
|
||||
app.use(express.urlencoded());
|
||||
|
||||
app.get('/', function(req, res) {
|
||||
axios.get('https://translate.yandex.net/api/v1.5/tr.json/getLangs', {
|
||||
params: {
|
||||
key: apiKey
|
||||
}
|
||||
})
|
||||
.then(function (response) {
|
||||
res.render('index', response.data)
|
||||
})
|
||||
.catch(function (error) {
|
||||
data = {
|
||||
error: error
|
||||
};
|
||||
res.render('error', data)
|
||||
})
|
||||
});
|
||||
|
||||
app.get('/css/:file', function(req, res) {
|
||||
res.sendFile(__dirname + '/./css/' + req.params.file);
|
||||
});
|
||||
|
||||
app.get('/result/:file', function(req, res) {
|
||||
res.sendFile(__dirname + '/./result/' + req.params.file);
|
||||
});
|
||||
|
||||
app.post('/', function(req, res) {
|
||||
var filename = "/result/" + Math.floor(Date.now() / 1000) + ".json";
|
||||
axios.get(req.body.sourceUrl)
|
||||
.then(function (response) {
|
||||
var json = response.data;
|
||||
var result = {};
|
||||
let promises = [];
|
||||
for (var key in json) {
|
||||
if (json.hasOwnProperty(key)) {
|
||||
promises.push(
|
||||
axios.get('https://translate.yandex.net/api/v1.5/tr.json/translate', {
|
||||
params: {
|
||||
key: apiKey,
|
||||
lang: req.body.target,
|
||||
text: json[key],
|
||||
target: key
|
||||
}
|
||||
})
|
||||
.then(function (response) {
|
||||
targetKey = response.request.path.match("(target=)(.+)")[2];
|
||||
result[targetKey] = response.data.text[0]
|
||||
})
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
Promise.all(promises).then(function () {
|
||||
fs.writeFile(__dirname + filename, JSON.stringify(result));
|
||||
var data = {
|
||||
'link': filename
|
||||
}
|
||||
res.render('result', data);
|
||||
});
|
||||
})
|
||||
.catch(function (error) {
|
||||
data = {
|
||||
error: error
|
||||
};
|
||||
res.render('error', data)
|
||||
})
|
||||
});
|
||||
|
||||
app.listen(port, () => console.log(`App listening on port ${port}`))
|
@ -4,7 +4,7 @@
|
||||
"description": "Translate Polytopia language files to any language you want!",
|
||||
"main": "index.js",
|
||||
"scripts": {
|
||||
"test": "echo \"Error: no test specified\" && exit 1"
|
||||
"start": "nodemon index.js"
|
||||
},
|
||||
"author": "McArn",
|
||||
"license": "ISC"
|
||||
|
22
views/error.mustache
Normal file
22
views/error.mustache
Normal file
@ -0,0 +1,22 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>Poliatranslatia</title>
|
||||
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
|
||||
<link rel="stylesheet" href="/css/styles.css">
|
||||
</head>
|
||||
<body>
|
||||
|
||||
{{> partials/header}}
|
||||
|
||||
<h3>Something went wrong</h3>
|
||||
<code>
|
||||
{{error}}
|
||||
</code>
|
||||
|
||||
{{> partials/footer}}
|
||||
|
||||
</body>
|
||||
</html>
|
41
views/index.mustache
Normal file
41
views/index.mustache
Normal file
@ -0,0 +1,41 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>Poliatranslatia</title>
|
||||
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
|
||||
<link rel="stylesheet" href="/css/styles.css">
|
||||
</head>
|
||||
<body>
|
||||
|
||||
{{> partials/header}}
|
||||
|
||||
<form action="/" method="POST">
|
||||
<label for="sourceUrl">Source JSON:</label><br>
|
||||
<input name="sourceUrl" id="sourceUrl" type="text" placeholder="URL to source JSON" required="true"><br>
|
||||
<button id="useDefault">Use default en_US</button><br><br>
|
||||
|
||||
<label for="target">Translation direction</label><br>
|
||||
<p>For example:<br>From en_US default to dutch, use en_nl.</p>
|
||||
<select name="target" id="targetLanguage">
|
||||
{{#dirs}}
|
||||
<option value={{.}}>{{.}}</option>
|
||||
{{/dirs}}
|
||||
</select>
|
||||
<br><br>
|
||||
|
||||
<button type="submit">Submit</button>
|
||||
</form>
|
||||
|
||||
<script>
|
||||
$('#useDefault').on('click', function(e) {
|
||||
e.preventDefault();
|
||||
$('#sourceUrl').val("http://midjiwan.com/lang/en_US.json");
|
||||
});
|
||||
</script>
|
||||
|
||||
{{> partials/footer}}
|
||||
|
||||
</body>
|
||||
</html>
|
4
views/partials/footer.mustache
Normal file
4
views/partials/footer.mustache
Normal file
@ -0,0 +1,4 @@
|
||||
<footer>
|
||||
Made by McArn<br>
|
||||
Powered by <a href="http://translate.yandex.com/">Yandex.Translate</a>
|
||||
</footer>
|
2
views/partials/header.mustache
Normal file
2
views/partials/header.mustache
Normal file
@ -0,0 +1,2 @@
|
||||
<h1>Poliatranslatia</h1>
|
||||
<h3>Easily make your own language file for the Polytopia by Midjiwan.</h3>
|
20
views/result.mustache
Normal file
20
views/result.mustache
Normal file
@ -0,0 +1,20 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>Poliatranslatia</title>
|
||||
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
|
||||
<link rel="stylesheet" href="/css/styles.css">
|
||||
</head>
|
||||
<body>
|
||||
|
||||
{{> partials/header}}
|
||||
|
||||
<p>Enter the following link into Polytopia to start using your custom language file. You can also share it with your friends!</p>
|
||||
<a href="{{link}}">{{link}}</a>
|
||||
|
||||
{{> partials/footer}}
|
||||
|
||||
</body>
|
||||
</html>
|
Reference in New Issue
Block a user