From 1af01ac89bc8b3aa75682006bc019f334e830ff5 Mon Sep 17 00:00:00 2001
From: CaramelKat <32065563+caramelkat@users.noreply.github.com>
Date: Mon, 30 Aug 2021 15:41:50 -0500
Subject: [PATCH] Added translation support for portal
---
src/authentication.js | 94 ++++++++---
src/services/juxt-web/routes/admin/api.js | 4 +-
.../juxt-web/routes/portal/communities.js | 11 ++
src/services/juxt-web/routes/portal/feed.js | 4 +
.../juxt-web/routes/portal/messages.js | 2 +
.../juxt-web/routes/portal/notifications.js | 2 +
src/services/juxt-web/routes/portal/show.js | 8 +
.../juxt-web/routes/portal/userpage.js | 26 ++-
src/translations/de.json | 126 +++++++++++++++
src/translations/en.json | 126 +++++++++++++++
src/translations/es.json | 126 +++++++++++++++
src/translations/fr.json | 126 +++++++++++++++
src/translations/index.js | 14 ++
src/translations/it.json | 126 +++++++++++++++
src/translations/ja.json | 126 +++++++++++++++
src/translations/ko.json | 126 +++++++++++++++
src/translations/nl.json | 126 +++++++++++++++
src/translations/pt.json | 126 +++++++++++++++
src/translations/ru.json | 126 +++++++++++++++
src/translations/zh.json | 126 +++++++++++++++
src/webfiles/portal/all_communities.ejs | 16 +-
src/webfiles/portal/announcements.ejs | 14 +-
src/webfiles/portal/communities.ejs | 22 +--
src/webfiles/portal/community.ejs | 44 +++---
...nity_posts.ejs => community_posts.ejs.old} | 8 +-
src/webfiles/portal/css/juxt.css | 61 ++++++--
src/webfiles/portal/feed.ejs | 20 +--
src/webfiles/portal/first_run.ejs | 148 +++++++-----------
src/webfiles/portal/following_list.ejs | 2 +
src/webfiles/portal/guest_notice.ejs | 96 +++++-------
src/webfiles/portal/js/juxt.js | 3 +-
src/webfiles/portal/me_page.ejs | 74 ++++-----
src/webfiles/portal/messages.ejs | 18 ++-
src/webfiles/portal/more_posts.ejs | 2 +-
src/webfiles/portal/notifications.ejs | 14 +-
src/webfiles/portal/user_page.ejs | 68 +++++---
36 files changed, 1826 insertions(+), 335 deletions(-)
create mode 100644 src/translations/de.json
create mode 100644 src/translations/en.json
create mode 100644 src/translations/es.json
create mode 100644 src/translations/fr.json
create mode 100644 src/translations/index.js
create mode 100644 src/translations/it.json
create mode 100644 src/translations/ja.json
create mode 100644 src/translations/ko.json
create mode 100644 src/translations/nl.json
create mode 100644 src/translations/pt.json
create mode 100644 src/translations/ru.json
create mode 100644 src/translations/zh.json
rename src/webfiles/portal/{community_posts.ejs => community_posts.ejs.old} (95%)
diff --git a/src/authentication.js b/src/authentication.js
index 74cb530..a04fd0f 100644
--- a/src/authentication.js
+++ b/src/authentication.js
@@ -8,6 +8,7 @@ const xmlParser = require('xml2json');
const request = require("request");
const moment = require('moment');
const { USER } = require('./models/user');
+const translations = require('./translations')
var HashMap = require('hashmap');
let TGA = require('tga');
let pako = require('pako');
@@ -16,33 +17,37 @@ let PNG = require('pngjs').PNG;
let communityMap = new HashMap();
let userMap = new HashMap();
-database.connect().then(async e => {
- let communities = await database.getCommunities();
- if(communities !== null) {
- for(let i = 0; i < communities.length; i++ ) {
- if(communities[i].title_id !== null) {
- for(let j = 0; j < communities[i].title_id.length; j++) {
- communityMap.set(communities[i].title_id[j], communities[i].name);
- communityMap.set(communities[i].title_id[j] + '-id', communities[i].community_id);
- }
- communityMap.set(communities[i].community_id, communities[i].name);
- }
- }
- }
- logger.success('Created community index')
- let users = await database.getUsers(1000);
- if(users !== null) {
- for(let i = 0; i < users.length; i++ ) {
- if(users[i].pid !== null) {
- userMap.set(users[i].pid.toString(), users[i].user_id);
- }
- }
- }
- logger.success('Created user index of ' + users.length + ' user(s)')
+nameCache();
-}).catch(error => {
- logger.error(error);
-});
+function nameCache() {
+ database.connect().then(async e => {
+ let communities = await database.getCommunities();
+ if(communities !== null) {
+ for(let i = 0; i < communities.length; i++ ) {
+ if(communities[i].title_id !== null) {
+ for(let j = 0; j < communities[i].title_id.length; j++) {
+ communityMap.set(communities[i].title_id[j], communities[i].name);
+ communityMap.set(communities[i].title_id[j] + '-id', communities[i].community_id);
+ }
+ communityMap.set(communities[i].community_id, communities[i].name);
+ }
+ }
+ }
+ logger.success('Created community index')
+ let users = await database.getUsers(1000);
+ if(users !== null) {
+ for(let i = 0; i < users.length; i++ ) {
+ if(users[i].pid !== null) {
+ userMap.set(users[i].pid.toString(), users[i].user_id);
+ }
+ }
+ }
+ logger.success('Created user index of ' + users.length + ' user(s)')
+
+ }).catch(error => {
+ logger.error(error);
+ });
+}
let methods = {
create_user: function(pid, experience, notifications, region) {
@@ -197,6 +202,9 @@ let methods = {
getUserHash: function() {
return userMap;
},
+ refreshCache: function () {
+ nameCache();
+ },
resizeImage: function (file, width, height) {
sharp(file)
.resize({ height: height, width: width })
@@ -204,6 +212,40 @@ let methods = {
.then(data => {
return data;
});
+ },
+ processLanguage: function (header) {
+ if(!header)
+ return translations.EN;
+ let paramPackData = this.decodeParamPack(header);
+ console.log(paramPackData.language_id)
+ switch (paramPackData.language_id) {
+ case '0':
+ return translations.JA
+ case '1':
+ return translations.EN
+ case '2':
+ return translations.FR
+ case '3':
+ return translations.DE
+ case '4':
+ return translations.IT
+ case '5':
+ return translations.ES
+ case '6':
+ return translations.ZH
+ case '7':
+ return translations.KO
+ case '8':
+ return translations.NL
+ case '9':
+ return translations.PT
+ case '10':
+ return translations.RU
+ case '11':
+ return translations.ZH
+ default:
+ return translations.EN
+ }
}
};
exports.data = methods;
\ No newline at end of file
diff --git a/src/services/juxt-web/routes/admin/api.js b/src/services/juxt-web/routes/admin/api.js
index 027303f..9ad2fa8 100644
--- a/src/services/juxt-web/routes/admin/api.js
+++ b/src/services/juxt-web/routes/admin/api.js
@@ -178,6 +178,7 @@ router.post('/communities/:communityID/update', upload.fields([{name: 'browserIc
community.save();
res.sendStatus(200);
+ util.data.refreshCache();
logger.audit('[' + user.user_id + ' - ' + user.pid + '] updated community ' + community.name);
}
else
@@ -514,6 +515,7 @@ router.post('/users/:userID/update', upload.none(), function (req, res) {
user.ban_lift_date = moment(req.body.ban_date);
user.save();
res.sendStatus(200);
+ util.data.refreshCache();
logger.audit('[' + parentUser.user_id + ' - ' + parentUser.pid + '] banned ' + user.user_id + ' until ' + user.ban_lift_date + ' for ' + user.ban_reason);
}
else
@@ -545,7 +547,7 @@ router.post('/posts/:postID/delete', function (req, res) {
if(user !== null)
{
if(config.authorized_PNIDs.indexOf(user.pid) === -1) {
- logger.audit('[' + user.user_id + ' - ' + user.pid + '] attempted to delete a community and is not authorized');
+ logger.audit('[' + user.user_id + ' - ' + user.pid + '] attempted to delete a post and is not authorized');
throw new Error('Invalid credentials supplied');
}
diff --git a/src/services/juxt-web/routes/portal/communities.js b/src/services/juxt-web/routes/portal/communities.js
index 36318ef..610720c 100644
--- a/src/services/juxt-web/routes/portal/communities.js
+++ b/src/services/juxt-web/routes/portal/communities.js
@@ -10,6 +10,7 @@ var router = express.Router();
router.get('/', function (req, res) {
res.header('X-Nintendo-WhiteList','1|http,youtube.com,,2|https,youtube.com,,2|http,.youtube.com,,2|https,.youtube.com,,2|http,.ytimg.com,,2|https,.ytimg.com,,2|http,.googlevideo.com,,2|https,.googlevideo.com,,2|https,youtube.com,/embed/,6|https,youtube.com,/e/,6|https,youtube.com,/v/,6|https,www.youtube.com,/embed/,6|https,www.youtube.com,/e/,6|https,www.youtube.com,/v/,6|https,youtube.googleapis.com,/e/,6|https,youtube.googleapis.com,/v/,6|http,maps.googleapis.com,/maps/api/streetview,2|https,maps.googleapis.com,/maps/api/streetview,2|http,cbk0.google.com,/cbk,2|https,cbk0.google.com,/cbk,2|http,cbk1.google.com,/cbk,2|https,cbk1.google.com,/cbk,2|http,cbk2.google.com,/cbk,2|https,cbk2.google.com,/cbk,2|http,cbk3.google.com,/cbk,2|https,cbk3.google.com,/cbk,2|https,.cloudfront.net,,2|https,www.google-analytics.com,/,2|https,stats.g.doubleclick.net,,2|https,www.google.com,/ads/,2|https,ssl.google-analytics.com,,2|http,fonts.googleapis.com,,2|fonts.googleapis.com,,2|https,www.googletagmanager.com,,2');
+ let lang = util.data.processLanguage(req.headers["x-nintendo-parampack"]);
database.connect().then(async e => {
let popularCommunities = await database.getMostPopularCommunities(9);
let newCommunities = await database.getNewCommunities(6);
@@ -18,6 +19,8 @@ router.get('/', function (req, res) {
popularCommunities: popularCommunities,
newCommunities: newCommunities,
cdnURL: config.CDN_domain,
+ lang: lang
+
});
}).catch(error => {
res.set("Content-Type", "application/xml");
@@ -37,11 +40,13 @@ router.get('/', function (req, res) {
router.get('/all', function (req, res) {
res.header('X-Nintendo-WhiteList','1|http,youtube.com,,2|https,youtube.com,,2|http,.youtube.com,,2|https,.youtube.com,,2|http,.ytimg.com,,2|https,.ytimg.com,,2|http,.googlevideo.com,,2|https,.googlevideo.com,,2|https,youtube.com,/embed/,6|https,youtube.com,/e/,6|https,youtube.com,/v/,6|https,www.youtube.com,/embed/,6|https,www.youtube.com,/e/,6|https,www.youtube.com,/v/,6|https,youtube.googleapis.com,/e/,6|https,youtube.googleapis.com,/v/,6|http,maps.googleapis.com,/maps/api/streetview,2|https,maps.googleapis.com,/maps/api/streetview,2|http,cbk0.google.com,/cbk,2|https,cbk0.google.com,/cbk,2|http,cbk1.google.com,/cbk,2|https,cbk1.google.com,/cbk,2|http,cbk2.google.com,/cbk,2|https,cbk2.google.com,/cbk,2|http,cbk3.google.com,/cbk,2|https,cbk3.google.com,/cbk,2|https,.cloudfront.net,,2|https,www.google-analytics.com,/,2|https,stats.g.doubleclick.net,,2|https,www.google.com,/ads/,2|https,ssl.google-analytics.com,,2|http,fonts.googleapis.com,,2|fonts.googleapis.com,,2|https,www.googletagmanager.com,,2');
+ let lang = util.data.processLanguage(req.headers["x-nintendo-parampack"]);
database.connect().then(async e => {
let communities = await database.getCommunities(90);
res.render('portal/all_communities.ejs', {
communities: communities,
cdnURL: config.CDN_domain,
+ lang: lang
});
}).catch(error => {
res.set("Content-Type", "application/xml");
@@ -61,6 +66,7 @@ router.get('/all', function (req, res) {
router.get('/announcements', function (req, res) {
res.header('X-Nintendo-WhiteList','1|http,youtube.com,,2|https,youtube.com,,2|http,.youtube.com,,2|https,.youtube.com,,2|http,.ytimg.com,,2|https,.ytimg.com,,2|http,.googlevideo.com,,2|https,.googlevideo.com,,2|https,youtube.com,/embed/,6|https,youtube.com,/e/,6|https,youtube.com,/v/,6|https,www.youtube.com,/embed/,6|https,www.youtube.com,/e/,6|https,www.youtube.com,/v/,6|https,youtube.googleapis.com,/e/,6|https,youtube.googleapis.com,/v/,6|http,maps.googleapis.com,/maps/api/streetview,2|https,maps.googleapis.com,/maps/api/streetview,2|http,cbk0.google.com,/cbk,2|https,cbk0.google.com,/cbk,2|http,cbk1.google.com,/cbk,2|https,cbk1.google.com,/cbk,2|http,cbk2.google.com,/cbk,2|https,cbk2.google.com,/cbk,2|http,cbk3.google.com,/cbk,2|https,cbk3.google.com,/cbk,2|https,.cloudfront.net,,2|https,www.google-analytics.com,/,2|https,stats.g.doubleclick.net,,2|https,www.google.com,/ads/,2|https,ssl.google-analytics.com,,2|http,fonts.googleapis.com,,2|fonts.googleapis.com,,2|https,www.googletagmanager.com,,2');
+ let lang = util.data.processLanguage(req.headers["x-nintendo-parampack"]);
database.connect().then(async e => {
let pid = util.data.processServiceToken(req.headers["x-nintendo-servicetoken"]);
if(pid === null)
@@ -77,6 +83,7 @@ router.get('/announcements', function (req, res) {
totalNumPosts: totalNumPosts,
account_server: config.account_server_domain.slice(8),
cdnURL: config.CDN_domain,
+ lang: lang
});
}).catch(error => {
console.error(error);
@@ -97,6 +104,7 @@ router.get('/announcements', function (req, res) {
router.get('/:communityID/:type', function (req, res) {
res.header('X-Nintendo-WhiteList','1|http,youtube.com,,2|https,youtube.com,,2|http,.youtube.com,,2|https,.youtube.com,,2|http,.ytimg.com,,2|https,.ytimg.com,,2|http,.googlevideo.com,,2|https,.googlevideo.com,,2|https,youtube.com,/embed/,6|https,youtube.com,/e/,6|https,youtube.com,/v/,6|https,www.youtube.com,/embed/,6|https,www.youtube.com,/e/,6|https,www.youtube.com,/v/,6|https,youtube.googleapis.com,/e/,6|https,youtube.googleapis.com,/v/,6|http,maps.googleapis.com,/maps/api/streetview,2|https,maps.googleapis.com,/maps/api/streetview,2|http,cbk0.google.com,/cbk,2|https,cbk0.google.com,/cbk,2|http,cbk1.google.com,/cbk,2|https,cbk1.google.com,/cbk,2|http,cbk2.google.com,/cbk,2|https,cbk2.google.com,/cbk,2|http,cbk3.google.com,/cbk,2|https,cbk3.google.com,/cbk,2|https,.cloudfront.net,,2|https,www.google-analytics.com,/,2|https,stats.g.doubleclick.net,,2|https,www.google.com,/ads/,2|https,ssl.google-analytics.com,,2|http,fonts.googleapis.com,,2|fonts.googleapis.com,,2|https,www.googletagmanager.com,,2');
+ let lang = util.data.processLanguage(req.headers["x-nintendo-parampack"]);
database.connect().then(async e => {
let pid = util.data.processServiceToken(req.headers["x-nintendo-servicetoken"]);
if(pid === null)
@@ -115,6 +123,7 @@ router.get('/:communityID/:type', function (req, res) {
user: user,
account_server: config.account_server_domain.slice(8),
cdnURL: config.CDN_domain,
+ lang: lang
});
}).catch(error => {
console.error(error);
@@ -135,6 +144,7 @@ router.get('/:communityID/:type', function (req, res) {
router.get('/:communityID/:type/loadPosts', function (req, res) {
res.header('X-Nintendo-WhiteList','1|http,youtube.com,,2|https,youtube.com,,2|http,.youtube.com,,2|https,.youtube.com,,2|http,.ytimg.com,,2|https,.ytimg.com,,2|http,.googlevideo.com,,2|https,.googlevideo.com,,2|https,youtube.com,/embed/,6|https,youtube.com,/e/,6|https,youtube.com,/v/,6|https,www.youtube.com,/embed/,6|https,www.youtube.com,/e/,6|https,www.youtube.com,/v/,6|https,youtube.googleapis.com,/e/,6|https,youtube.googleapis.com,/v/,6|http,maps.googleapis.com,/maps/api/streetview,2|https,maps.googleapis.com,/maps/api/streetview,2|http,cbk0.google.com,/cbk,2|https,cbk0.google.com,/cbk,2|http,cbk1.google.com,/cbk,2|https,cbk1.google.com,/cbk,2|http,cbk2.google.com,/cbk,2|https,cbk2.google.com,/cbk,2|http,cbk3.google.com,/cbk,2|https,cbk3.google.com,/cbk,2|https,.cloudfront.net,,2|https,www.google-analytics.com,/,2|https,stats.g.doubleclick.net,,2|https,www.google.com,/ads/,2|https,ssl.google-analytics.com,,2|http,fonts.googleapis.com,,2|fonts.googleapis.com,,2|https,www.googletagmanager.com,,2');
+ let lang = util.data.processLanguage(req.headers["x-nintendo-parampack"]);
database.connect().then(async e => {
let pid = util.data.processServiceToken(req.headers["x-nintendo-servicetoken"]);
let post = await database.getPostByID(req.query.postID);
@@ -170,6 +180,7 @@ router.get('/:communityID/:type/loadPosts', function (req, res) {
newPosts: posts,
account_server: config.account_server_domain.slice(8),
cdnURL: config.CDN_domain,
+ lang: lang
});
}
else
diff --git a/src/services/juxt-web/routes/portal/feed.js b/src/services/juxt-web/routes/portal/feed.js
index 0aecc16..52c51f1 100644
--- a/src/services/juxt-web/routes/portal/feed.js
+++ b/src/services/juxt-web/routes/portal/feed.js
@@ -8,6 +8,7 @@ var router = express.Router();
router.get('/', function (req, res) {
res.header('X-Nintendo-WhiteList','1|http,youtube.com,,2|https,youtube.com,,2|http,.youtube.com,,2|https,.youtube.com,,2|http,.ytimg.com,,2|https,.ytimg.com,,2|http,.googlevideo.com,,2|https,.googlevideo.com,,2|https,youtube.com,/embed/,6|https,youtube.com,/e/,6|https,youtube.com,/v/,6|https,www.youtube.com,/embed/,6|https,www.youtube.com,/e/,6|https,www.youtube.com,/v/,6|https,youtube.googleapis.com,/e/,6|https,youtube.googleapis.com,/v/,6|http,maps.googleapis.com,/maps/api/streetview,2|https,maps.googleapis.com,/maps/api/streetview,2|http,cbk0.google.com,/cbk,2|https,cbk0.google.com,/cbk,2|http,cbk1.google.com,/cbk,2|https,cbk1.google.com,/cbk,2|http,cbk2.google.com,/cbk,2|https,cbk2.google.com,/cbk,2|http,cbk3.google.com,/cbk,2|https,cbk3.google.com,/cbk,2|https,.cloudfront.net,,2|https,www.google-analytics.com,/,2|https,stats.g.doubleclick.net,,2|https,www.google.com,/ads/,2|https,ssl.google-analytics.com,,2|http,fonts.googleapis.com,,2||fonts.googleapis.com,,2');
+ let lang = util.data.processLanguage(req.headers["x-nintendo-parampack"]);
database.connect().then(async e => {
//let paramPackData = util.data.decodeParamPack(req.headers["x-nintendo-parampack"]);
@@ -25,6 +26,7 @@ router.get('/', function (req, res) {
communityMap: communityMap,
account_server: config.account_server_domain.slice(8),
cdnURL: config.CDN_domain,
+ lang: lang
});
user.notification_list.filter(noti => noti.read === false).forEach(function(notification) {
notification.read = true;
@@ -50,6 +52,7 @@ router.get('/', function (req, res) {
router.get('/loadposts', function (req, res) {
res.header('X-Nintendo-WhiteList','1|http,youtube.com,,2|https,youtube.com,,2|http,.youtube.com,,2|https,.youtube.com,,2|http,.ytimg.com,,2|https,.ytimg.com,,2|http,.googlevideo.com,,2|https,.googlevideo.com,,2|https,youtube.com,/embed/,6|https,youtube.com,/e/,6|https,youtube.com,/v/,6|https,www.youtube.com,/embed/,6|https,www.youtube.com,/e/,6|https,www.youtube.com,/v/,6|https,youtube.googleapis.com,/e/,6|https,youtube.googleapis.com,/v/,6|http,maps.googleapis.com,/maps/api/streetview,2|https,maps.googleapis.com,/maps/api/streetview,2|http,cbk0.google.com,/cbk,2|https,cbk0.google.com,/cbk,2|http,cbk1.google.com,/cbk,2|https,cbk1.google.com,/cbk,2|http,cbk2.google.com,/cbk,2|https,cbk2.google.com,/cbk,2|http,cbk3.google.com,/cbk,2|https,cbk3.google.com,/cbk,2|https,.cloudfront.net,,2|https,www.google-analytics.com,/,2|https,stats.g.doubleclick.net,,2|https,www.google.com,/ads/,2|https,ssl.google-analytics.com,,2|http,fonts.googleapis.com,,2|fonts.googleapis.com,,2|https,www.googletagmanager.com,,2');
+ let lang = util.data.processLanguage(req.headers["x-nintendo-parampack"]);
database.connect().then(async e => {
let pid = util.data.processServiceToken(req.headers["x-nintendo-servicetoken"]);
let post = await database.getPostByID(req.query.postID);
@@ -71,6 +74,7 @@ router.get('/loadposts', function (req, res) {
newPosts: posts,
account_server: config.account_server_domain.slice(8),
cdnURL: config.CDN_domain,
+ lang: lang
});
}
else
diff --git a/src/services/juxt-web/routes/portal/messages.js b/src/services/juxt-web/routes/portal/messages.js
index d3a3092..2f5c06b 100644
--- a/src/services/juxt-web/routes/portal/messages.js
+++ b/src/services/juxt-web/routes/portal/messages.js
@@ -8,6 +8,7 @@ var router = express.Router();
router.get('/', function (req, res) {
res.header('X-Nintendo-WhiteList','1|http,youtube.com,,2|https,youtube.com,,2|http,.youtube.com,,2|https,.youtube.com,,2|http,.ytimg.com,,2|https,.ytimg.com,,2|http,.googlevideo.com,,2|https,.googlevideo.com,,2|https,youtube.com,/embed/,6|https,youtube.com,/e/,6|https,youtube.com,/v/,6|https,www.youtube.com,/embed/,6|https,www.youtube.com,/e/,6|https,www.youtube.com,/v/,6|https,youtube.googleapis.com,/e/,6|https,youtube.googleapis.com,/v/,6|http,maps.googleapis.com,/maps/api/streetview,2|https,maps.googleapis.com,/maps/api/streetview,2|http,cbk0.google.com,/cbk,2|https,cbk0.google.com,/cbk,2|http,cbk1.google.com,/cbk,2|https,cbk1.google.com,/cbk,2|http,cbk2.google.com,/cbk,2|https,cbk2.google.com,/cbk,2|http,cbk3.google.com,/cbk,2|https,cbk3.google.com,/cbk,2|https,.cloudfront.net,,2|https,www.google-analytics.com,/,2|https,stats.g.doubleclick.net,,2|https,www.google.com,/ads/,2|https,ssl.google-analytics.com,,2|http,fonts.googleapis.com,,2||fonts.googleapis.com,,2');
+ let lang = util.data.processLanguage(req.headers["x-nintendo-parampack"]);
database.connect().then(async e => {
//let paramPackData = util.data.decodeParamPack(req.headers["x-nintendo-parampack"]);
@@ -20,6 +21,7 @@ router.get('/', function (req, res) {
moment: moment,
user: user,
cdnURL: config.CDN_domain,
+ lang: lang,
});
user.notification_list.filter(noti => noti.read === false).forEach(function(notification) {
notification.read = true;
diff --git a/src/services/juxt-web/routes/portal/notifications.js b/src/services/juxt-web/routes/portal/notifications.js
index 595846a..b045545 100644
--- a/src/services/juxt-web/routes/portal/notifications.js
+++ b/src/services/juxt-web/routes/portal/notifications.js
@@ -8,6 +8,7 @@ var router = express.Router();
router.get('/', function (req, res) {
res.header('X-Nintendo-WhiteList','1|http,youtube.com,,2|https,youtube.com,,2|http,.youtube.com,,2|https,.youtube.com,,2|http,.ytimg.com,,2|https,.ytimg.com,,2|http,.googlevideo.com,,2|https,.googlevideo.com,,2|https,youtube.com,/embed/,6|https,youtube.com,/e/,6|https,youtube.com,/v/,6|https,www.youtube.com,/embed/,6|https,www.youtube.com,/e/,6|https,www.youtube.com,/v/,6|https,youtube.googleapis.com,/e/,6|https,youtube.googleapis.com,/v/,6|http,maps.googleapis.com,/maps/api/streetview,2|https,maps.googleapis.com,/maps/api/streetview,2|http,cbk0.google.com,/cbk,2|https,cbk0.google.com,/cbk,2|http,cbk1.google.com,/cbk,2|https,cbk1.google.com,/cbk,2|http,cbk2.google.com,/cbk,2|https,cbk2.google.com,/cbk,2|http,cbk3.google.com,/cbk,2|https,cbk3.google.com,/cbk,2|https,.cloudfront.net,,2|https,www.google-analytics.com,/,2|https,stats.g.doubleclick.net,,2|https,www.google.com,/ads/,2|https,ssl.google-analytics.com,,2|http,fonts.googleapis.com,,2||fonts.googleapis.com,,2');
+ let lang = util.data.processLanguage(req.headers["x-nintendo-parampack"]);
database.connect().then(async e => {
//let paramPackData = util.data.decodeParamPack(req.headers["x-nintendo-parampack"]);
@@ -20,6 +21,7 @@ router.get('/', function (req, res) {
moment: moment,
user: user,
cdnURL: config.CDN_domain,
+ lang: lang
});
user.notification_list.filter(noti => noti.read === false).forEach(function(notification) {
notification.read = true;
diff --git a/src/services/juxt-web/routes/portal/show.js b/src/services/juxt-web/routes/portal/show.js
index b336598..9fe945c 100644
--- a/src/services/juxt-web/routes/portal/show.js
+++ b/src/services/juxt-web/routes/portal/show.js
@@ -8,6 +8,7 @@ var router = express.Router();
router.get('/', function (req, res) {
res.header('X-Nintendo-WhiteList','1|http,youtube.com,,2|https,youtube.com,,2|http,.youtube.com,,2|https,.youtube.com,,2|http,.ytimg.com,,2|https,.ytimg.com,,2|http,.googlevideo.com,,2|https,.googlevideo.com,,2|https,youtube.com,/embed/,6|https,youtube.com,/e/,6|https,youtube.com,/v/,6|https,www.youtube.com,/embed/,6|https,www.youtube.com,/e/,6|https,www.youtube.com,/v/,6|https,youtube.googleapis.com,/e/,6|https,youtube.googleapis.com,/v/,6|http,maps.googleapis.com,/maps/api/streetview,2|https,maps.googleapis.com,/maps/api/streetview,2|http,cbk0.google.com,/cbk,2|https,cbk0.google.com,/cbk,2|http,cbk1.google.com,/cbk,2|https,cbk1.google.com,/cbk,2|http,cbk2.google.com,/cbk,2|https,cbk2.google.com,/cbk,2|http,cbk3.google.com,/cbk,2|https,cbk3.google.com,/cbk,2|https,.cloudfront.net,,2|https,www.google-analytics.com,/,2|https,stats.g.doubleclick.net,,2|https,www.google.com,/ads/,2|https,ssl.google-analytics.com,,2|http,fonts.googleapis.com,,2|fonts.googleapis.com,,2|https,www.googletagmanager.com,,2|http,miiverse.cc,,2|https,miiverse.cc,,2');
+ let lang = util.data.processLanguage(req.headers["x-nintendo-parampack"]);
database.connect().then(async e => {
let pid = util.data.processServiceToken(req.headers["x-nintendo-servicetoken"]);
let user = null;
@@ -15,6 +16,7 @@ router.get('/', function (req, res) {
{
res.render('portal/guest_notice.ejs', {
cdnURL: config.CDN_domain,
+ lang: lang,
});
}
else
@@ -24,6 +26,7 @@ router.get('/', function (req, res) {
{
res.render('portal/first_run.ejs', {
cdnURL: config.CDN_domain,
+ lang: lang,
});
}
else {
@@ -44,6 +47,7 @@ router.get('/', function (req, res) {
user: user,
moment: moment,
cdnURL: config.CDN_domain,
+ lang: lang,
});
}
else
@@ -54,6 +58,7 @@ router.get('/', function (req, res) {
popularCommunities: popularCommunities,
newCommunities: newCommunities,
cdnURL: config.CDN_domain,
+ lang: lang,
});
}
}
@@ -78,8 +83,10 @@ router.get('/', function (req, res) {
router.get('/first', function (req, res) {
res.header('X-Nintendo-WhiteList','1|http,youtube.com,,2|https,youtube.com,,2|http,.youtube.com,,2|https,.youtube.com,,2|http,.ytimg.com,,2|https,.ytimg.com,,2|http,.googlevideo.com,,2|https,.googlevideo.com,,2|https,youtube.com,/embed/,6|https,youtube.com,/e/,6|https,youtube.com,/v/,6|https,www.youtube.com,/embed/,6|https,www.youtube.com,/e/,6|https,www.youtube.com,/v/,6|https,youtube.googleapis.com,/e/,6|https,youtube.googleapis.com,/v/,6|http,maps.googleapis.com,/maps/api/streetview,2|https,maps.googleapis.com,/maps/api/streetview,2|http,cbk0.google.com,/cbk,2|https,cbk0.google.com,/cbk,2|http,cbk1.google.com,/cbk,2|https,cbk1.google.com,/cbk,2|http,cbk2.google.com,/cbk,2|https,cbk2.google.com,/cbk,2|http,cbk3.google.com,/cbk,2|https,cbk3.google.com,/cbk,2|https,.cloudfront.net,,2|https,www.google-analytics.com,/,2|https,stats.g.doubleclick.net,,2|https,www.google.com,/ads/,2|https,ssl.google-analytics.com,,2|http,fonts.googleapis.com,,2|fonts.googleapis.com,,2|https,www.googletagmanager.com,,2|http,pretendo.cc,,2|https,pretendo.cc,,2');
+ let lang = util.data.processLanguage(req.headers["x-nintendo-parampack"]);
res.render('portal/first_run.ejs', {
cdnURL: config.CDN_domain,
+ lang: lang,
});
});
@@ -97,6 +104,7 @@ router.post('/newUser', function (req, res) {
if(user === null)
{
await util.data.create_user(pid, req.body.experience, req.body.notifications, req.body.region);
+ util.data.refreshCache();
if(await database.getUserByPID(pid) !== null)
res.sendStatus(200);
else
diff --git a/src/services/juxt-web/routes/portal/userpage.js b/src/services/juxt-web/routes/portal/userpage.js
index aa08a30..ea81fcf 100644
--- a/src/services/juxt-web/routes/portal/userpage.js
+++ b/src/services/juxt-web/routes/portal/userpage.js
@@ -10,8 +10,8 @@ var router = express.Router();
router.get('/me', function (req, res) {
res.header('X-Nintendo-WhiteList','1|http,youtube.com,,2|https,youtube.com,,2|http,pretendo.cc,,2|https,pretendo.cc,,2');
+ let lang = util.data.processLanguage(req.headers["x-nintendo-parampack"]);
database.connect().then(async e => {
-
let pid = util.data.processServiceToken(req.headers["x-nintendo-servicetoken"]);
if(pid === null)
pid = 1000000000;
@@ -27,6 +27,7 @@ router.get('/me', function (req, res) {
numPosts: numPosts,
account_server: config.account_server_domain.slice(8),
cdnURL: config.CDN_domain,
+ lang: lang,
});
}).catch(error => {
@@ -83,6 +84,7 @@ router.post('/me', upload.none(), function (req, res) {
router.get('/show', function (req, res) {
res.header('X-Nintendo-WhiteList','1|http,youtube.com,,2|https,youtube.com,,2|http,.youtube.com,,2|https,.youtube.com,,2|http,.ytimg.com,,2|https,.ytimg.com,,2|http,.googlevideo.com,,2|https,.googlevideo.com,,2|https,youtube.com,/embed/,6|https,youtube.com,/e/,6|https,youtube.com,/v/,6|https,www.youtube.com,/embed/,6|https,www.youtube.com,/e/,6|https,www.youtube.com,/v/,6|https,youtube.googleapis.com,/e/,6|https,youtube.googleapis.com,/v/,6|http,maps.googleapis.com,/maps/api/streetview,2|https,maps.googleapis.com,/maps/api/streetview,2|http,cbk0.google.com,/cbk,2|https,cbk0.google.com,/cbk,2|http,cbk1.google.com,/cbk,2|https,cbk1.google.com,/cbk,2|http,cbk2.google.com,/cbk,2|https,cbk2.google.com,/cbk,2|http,cbk3.google.com,/cbk,2|https,cbk3.google.com,/cbk,2|https,.cloudfront.net,,2|https,www.google-analytics.com,/,2|https,stats.g.doubleclick.net,,2|https,www.google.com,/ads/,2|https,ssl.google-analytics.com,,2|http,fonts.googleapis.com,,2|fonts.googleapis.com,,2|https,www.googletagmanager.com,,2');
+ let lang = util.data.processLanguage(req.headers["x-nintendo-parampack"]);
var userID = req.query.pid;
if(userID === 'me') {
res.sendStatus(504);
@@ -111,6 +113,7 @@ router.get('/show', function (req, res) {
parentUser: parentUser,
account_server: config.account_server_domain.slice(8),
cdnURL: config.CDN_domain,
+ lang: lang,
});
}).catch(error => {
console.error(error);
@@ -131,6 +134,7 @@ router.get('/show', function (req, res) {
router.get('/loadPosts', function (req, res) {
res.header('X-Nintendo-WhiteList','1|http,youtube.com,,2|https,youtube.com,,2|http,.youtube.com,,2|https,.youtube.com,,2|http,.ytimg.com,,2|https,.ytimg.com,,2|http,.googlevideo.com,,2|https,.googlevideo.com,,2|https,youtube.com,/embed/,6|https,youtube.com,/e/,6|https,youtube.com,/v/,6|https,www.youtube.com,/embed/,6|https,www.youtube.com,/e/,6|https,www.youtube.com,/v/,6|https,youtube.googleapis.com,/e/,6|https,youtube.googleapis.com,/v/,6|http,maps.googleapis.com,/maps/api/streetview,2|https,maps.googleapis.com,/maps/api/streetview,2|http,cbk0.google.com,/cbk,2|https,cbk0.google.com,/cbk,2|http,cbk1.google.com,/cbk,2|https,cbk1.google.com,/cbk,2|http,cbk2.google.com,/cbk,2|https,cbk2.google.com,/cbk,2|http,cbk3.google.com,/cbk,2|https,cbk3.google.com,/cbk,2|https,.cloudfront.net,,2|https,www.google-analytics.com,/,2|https,stats.g.doubleclick.net,,2|https,www.google.com,/ads/,2|https,ssl.google-analytics.com,,2|http,fonts.googleapis.com,,2|fonts.googleapis.com,,2|https,www.googletagmanager.com,,2');
+ let lang = util.data.processLanguage(req.headers["x-nintendo-parampack"]);
database.connect().then(async e => {
let pid = util.data.processServiceToken(req.headers["x-nintendo-servicetoken"]);
let post = await database.getPostByID(req.query.postID);
@@ -153,6 +157,7 @@ router.get('/loadPosts', function (req, res) {
newPosts: newPosts,
account_server: config.account_server_domain.slice(8),
cdnURL: config.CDN_domain,
+ lang: lang
});
}
else
@@ -178,6 +183,7 @@ router.get('/loadPosts', function (req, res) {
router.get('/following', function (req, res) {
res.header('X-Nintendo-WhiteList','1|http,youtube.com,,2|https,youtube.com,,2|http,.youtube.com,,2|https,.youtube.com,,2|http,.ytimg.com,,2|https,.ytimg.com,,2|http,.googlevideo.com,,2|https,.googlevideo.com,,2|https,youtube.com,/embed/,6|https,youtube.com,/e/,6|https,youtube.com,/v/,6|https,www.youtube.com,/embed/,6|https,www.youtube.com,/e/,6|https,www.youtube.com,/v/,6|https,youtube.googleapis.com,/e/,6|https,youtube.googleapis.com,/v/,6|http,maps.googleapis.com,/maps/api/streetview,2|https,maps.googleapis.com,/maps/api/streetview,2|http,cbk0.google.com,/cbk,2|https,cbk0.google.com,/cbk,2|http,cbk1.google.com,/cbk,2|https,cbk1.google.com,/cbk,2|http,cbk2.google.com,/cbk,2|https,cbk2.google.com,/cbk,2|http,cbk3.google.com,/cbk,2|https,cbk3.google.com,/cbk,2|https,.cloudfront.net,,2|https,www.google-analytics.com,/,2|https,stats.g.doubleclick.net,,2|https,www.google.com,/ads/,2|https,ssl.google-analytics.com,,2|http,fonts.googleapis.com,,2|fonts.googleapis.com,,2|https,www.googletagmanager.com,,2');
+ let lang = util.data.processLanguage(req.headers["x-nintendo-parampack"]);
database.connect().then(async e => {
let user = await database.getUserByPID(req.query.pid);
let followers = user.followed_users;
@@ -201,20 +207,22 @@ router.get('/following', function (req, res) {
userMap: userMap,
account_server: config.account_server_domain.slice(8),
cdnURL: config.CDN_domain,
+ lang: lang
});
}
else
{
- res.send('
Not following anyone.
')
+ res.send('' + lang.user_page.no_following + '
')
}
}).catch(error => {
console.log(error);
- res.send(' Not following anyone.
')
+ res.send('' + lang.user_page.no_following + '
')
});
});
router.get('/followers', function (req, res) {
res.header('X-Nintendo-WhiteList','1|http,youtube.com,,2|https,youtube.com,,2|http,.youtube.com,,2|https,.youtube.com,,2|http,.ytimg.com,,2|https,.ytimg.com,,2|http,.googlevideo.com,,2|https,.googlevideo.com,,2|https,youtube.com,/embed/,6|https,youtube.com,/e/,6|https,youtube.com,/v/,6|https,www.youtube.com,/embed/,6|https,www.youtube.com,/e/,6|https,www.youtube.com,/v/,6|https,youtube.googleapis.com,/e/,6|https,youtube.googleapis.com,/v/,6|http,maps.googleapis.com,/maps/api/streetview,2|https,maps.googleapis.com,/maps/api/streetview,2|http,cbk0.google.com,/cbk,2|https,cbk0.google.com,/cbk,2|http,cbk1.google.com,/cbk,2|https,cbk1.google.com,/cbk,2|http,cbk2.google.com,/cbk,2|https,cbk2.google.com,/cbk,2|http,cbk3.google.com,/cbk,2|https,cbk3.google.com,/cbk,2|https,.cloudfront.net,,2|https,www.google-analytics.com,/,2|https,stats.g.doubleclick.net,,2|https,www.google.com,/ads/,2|https,ssl.google-analytics.com,,2|http,fonts.googleapis.com,,2|fonts.googleapis.com,,2|https,www.googletagmanager.com,,2');
+ let lang = util.data.processLanguage(req.headers["x-nintendo-parampack"]);
database.connect().then(async e => {
let user = await database.getUserByPID(req.query.pid);
let followers = user.following_users;
@@ -236,20 +244,22 @@ router.get('/followers', function (req, res) {
userMap: userMap,
account_server: config.account_server_domain.slice(8),
cdnURL: config.CDN_domain,
+ lang: lang
});
}
else
{
- res.send('No Followers
')
+ res.send('' + lang.user_page.no_followers + '
')
}
}).catch(error => {
console.log(error);
- res.send(' No Followers.
')
+ res.send('' + lang.user_page.no_followers + '
')
});
});
router.get('/friends', function (req, res) {
res.header('X-Nintendo-WhiteList','1|http,youtube.com,,2|https,youtube.com,,2|http,.youtube.com,,2|https,.youtube.com,,2|http,.ytimg.com,,2|https,.ytimg.com,,2|http,.googlevideo.com,,2|https,.googlevideo.com,,2|https,youtube.com,/embed/,6|https,youtube.com,/e/,6|https,youtube.com,/v/,6|https,www.youtube.com,/embed/,6|https,www.youtube.com,/e/,6|https,www.youtube.com,/v/,6|https,youtube.googleapis.com,/e/,6|https,youtube.googleapis.com,/v/,6|http,maps.googleapis.com,/maps/api/streetview,2|https,maps.googleapis.com,/maps/api/streetview,2|http,cbk0.google.com,/cbk,2|https,cbk0.google.com,/cbk,2|http,cbk1.google.com,/cbk,2|https,cbk1.google.com,/cbk,2|http,cbk2.google.com,/cbk,2|https,cbk2.google.com,/cbk,2|http,cbk3.google.com,/cbk,2|https,cbk3.google.com,/cbk,2|https,.cloudfront.net,,2|https,www.google-analytics.com,/,2|https,stats.g.doubleclick.net,,2|https,www.google.com,/ads/,2|https,ssl.google-analytics.com,,2|http,fonts.googleapis.com,,2|fonts.googleapis.com,,2|https,www.googletagmanager.com,,2');
+ let lang = util.data.processLanguage(req.headers["x-nintendo-parampack"]);
database.connect().then(async e => {
let user = await database.getUserByPID(req.query.pid);
let friends = null;
@@ -264,11 +274,12 @@ router.get('/friends', function (req, res) {
userMap: userMap,
account_server: config.account_server_domain.slice(8),
cdnURL: config.CDN_domain,
+ lang: lang
});
}
else
{
- res.send('No Friends
')
+ res.send('' + lang.user_page.no_friends + '
')
}
}).catch(error => {
console.log(error);
@@ -288,6 +299,7 @@ router.get('/friends', function (req, res) {
});
router.post('/follow', upload.none(), function (req, res) {
+ let lang = util.data.processLanguage(req.headers["x-nintendo-parampack"]);
database.connect().then(async e => {
let pid = util.data.processServiceToken(req.headers["x-nintendo-servicetoken"]);
let userToFollow = await database.getUserByPID(req.body.userID);
@@ -299,7 +311,7 @@ router.post('/follow', upload.none(), function (req, res) {
userToFollow.addToFollowers(user.pid);
user.addToUsers(userToFollow.pid);
res.sendStatus(200);
- await database.pushNewNotificationByPID(userToFollow.pid, user.user_id + ' followed you!', '/users/show?pid=' + user.pid)
+ await database.pushNewNotificationByPID(userToFollow.pid, user.user_id + ' ' + lang.notifications.new_follower, '/users/show?pid=' + user.pid)
}
else if(req.body.type === 'false' && user !== null && user.followed_users.indexOf(userToFollow.pid) !== -1)
{
diff --git a/src/translations/de.json b/src/translations/de.json
new file mode 100644
index 0000000..412d446
--- /dev/null
+++ b/src/translations/de.json
@@ -0,0 +1,126 @@
+{
+ "language": "German",
+ "global": {
+ "user_page": "User Page",
+ "activity_feed": "Activity Feed",
+ "communities": "Communities",
+ "messages": "Messages",
+ "notifications": "Notifications",
+ "go_back": "Go Back",
+ "back": "Back",
+ "yeahs": "Yeahs",
+ "more": "Load More Posts",
+ "no_posts": "No Posts",
+ "private": "Private",
+ "close": "Close",
+ "save": "Save",
+ "exit": "Exit",
+ "next": "Next"
+ },
+ "all_communities": {
+ "text": "All Communities",
+ "announcements": "Announcements",
+ "ann_string": "Click here to view recent announcements!",
+ "popular_places": "Popular Places",
+ "new_communities": "New Communities",
+ "show_all": "Show All",
+ "search": "Search communities..."
+ },
+ "community": {
+ "follow": "Follow Community",
+ "following": "Following",
+ "followers": "Followers",
+ "posts": "Posts",
+ "tags": "Tags",
+ "recent": "Recent Posts",
+ "popular": "Popular Posts",
+ "verified": "Verified Posts",
+ "new": "New Post"
+ },
+ "user_page": {
+ "country": "Country",
+ "birthday": "Birthday",
+ "game_experience": "Game Experience",
+ "posts": "Posts",
+ "friends": "Friends",
+ "following": "Following",
+ "followers": "Followers",
+ "follow_user": "Follow",
+ "following_user": "Following",
+ "befriend": "Befriend",
+ "pending": "Pending",
+ "unfriend": "Unfriend",
+ "no_friends": "No Friends",
+ "no_following": "Not Following Anyone",
+ "no_followers": "No Followers"
+ },
+ "user_settings": {
+ "profile_settings": "Profile Settings",
+ "show_country": "Show Country on Profile",
+ "show_birthday": "Show Birthday on Profile",
+ "show_game": "Show Game Experience on Profile",
+ "show_comment": "Show Comment on Profile",
+ "profile_comment": "Profile Comment",
+ "swearing": "Profile comment cannot contain explicit language."
+ },
+ "activity_feed": {
+ "empty": "It's empty here. Try following someone!"
+ },
+ "notifications": {
+ "none": "No notifications.",
+ "new_follower": "followed you!"
+ },
+ "new_post": {
+ "new_post_text": "New Post",
+ "post_to": "Post to",
+ "text_hint": "Tap here to make a post.",
+ "swearing": "Post cannot contain explicit language."
+ },
+ "messages": {
+ "coming_soon": "Messages isn't ready yet. Check back soon!"
+ },
+ "setup": {
+ "welcome": "Welcome to Juxtaposition!",
+ "welcome_text": "Juxt is a gaming community that connects people from all over the world using Mii characters. Use Juxt to share your gaming experiences and meet people from around the world.",
+ "beta": "Beta Disclaimer",
+ "beta_text": {
+ "fisrt": "You are about to try out the first public beta of Juxt. This means that a lot is still up in the air, and a lot can change at any time.",
+ "second": "This can and may include a total wipe of the database at the conclusion or during the beta period.",
+ "third": "The website, its software and all content found on it are provided on an “as is” and “as available” basis. The Pretendo Network does not give any warranties, whether express or implied, as to the suitability or usability of the website, its software or any of its content."
+ },
+ "info": "What is Juxtaposition?",
+ "info_text": "Juxt is a user-driven gaming community where you can interact with people\n all over the world. You can write or draw posts in game communities or send messages directly to your friends.",
+ "rules": "Juxt Rules",
+ "rules_text": {
+ "first": "The following are some important guidelines for making Juxt a fun and enjoyable experience for everyone. The Juxt Code of Conduct contains detailed information, so please read it carefully.",
+ "second": "Posts Can Be Viewed Around the World",
+ "third": "Juxt contains many gaming communities where people from all over the world can share their thoughts. When you post in a community, remember that everyone can see it, so please express yourself in a way that everyone can enjoy. Use common sense, and think before you post. Juxt is a service that is also accessible from the Internet, so bear in mind that people who don't use Juxt may also see your posts. Additionally, any comments you make on your friends’ posts will be seen not by just your friends but by people around the world, too. Please keep this in mind.",
+ "fourth": "Be Nice to One Another",
+ "fifth": "In order to keep Juxt a fun place for everyone, we ask that you be considerate to other users. Help us keep Juxt an enjoyable experience by not posting anything inappropriate or offensive.",
+ "sixth": "Do Not Post Personal Information—Yours or Others’",
+ "seventh": "Remember, knowing someone in Juxt isn’t the same as knowing them in real life. Never share your e-mail address, home address, work or school name, or other personally identifying information with anyone on Juxt, and never share anyone else's information either. Additionally, if someone you meet in Juxt invites you to meet him or her in the real world, do not accept. Juxt is an online community and should not be used to arrange real-world meet-ups.",
+ "eighth": "Don’t Post Spoilers",
+ "ninth": "Some people come to Juxt looking for tips and tricks for games, but others want to discover a game's secrets all on their own. Posts that reveal secrets of a game or its story are called \"spoilers.\" If you're posting something about a game that might be a spoiler, be sure to check the Spoilers box before sending your post. This way, people who don't want to be spoiled won't see your post.",
+ "tenth": "Code of Conduct Violations",
+ "eleventh": "Our goal is to keep Juxt fun and enjoyable for everyone. In the event that someone violates the Juxt Code of Conduct, we will take appropriate action, up to and including blocking the offending user or console.",
+ "twelfth": "Have You Played That Game?",
+ "thirteenth": "If you're posting in the community for a game you've played, your posts will have an icon indicating that you've played it."
+ },
+ "experience": "Game Experience",
+ "experience_text": {
+ "info": "Please tell us how you would describe your level of experience with games. You can change this setting later.",
+ "beginner": "Beginner",
+ "intermediate": "Intermediate",
+ "expert": "Expert"
+ },
+ "google": "Google Analytics",
+ "google_text": "Juxtaposition uses Google Analytics in order to track how users are using our service. The data collected includes but is not limited to time of visit, pages visited, and time spent on the site. This data is not attached to you in any way, and is not used for advertisements by us or Google.",
+ "ready": "Ready to Start Using Juxt",
+ "ready_text": "First check out some communities and see what people from all over the world are posting about. Take this opportunity to familiarize yourself with Juxt. You might make some new discoveries along the way!",
+ "done": "Have fun in Juxt!",
+ "done_button": "Let's Go!",
+ "guest": "Guest Mode",
+ "guest_text": "We can't verify your account at the moment, which likely means your are currently logging in with a Nintendo Network account. You will still be able to browse juxt, but you will not be able to Yeah! posts or make posts of your own till you log in with a Pretendo Network account. For more information check the Discord server.",
+ "guest_button": "I Understand"
+ }
+}
\ No newline at end of file
diff --git a/src/translations/en.json b/src/translations/en.json
new file mode 100644
index 0000000..1670f9c
--- /dev/null
+++ b/src/translations/en.json
@@ -0,0 +1,126 @@
+{
+ "language": "English",
+ "global": {
+ "user_page": "User Page",
+ "activity_feed": "Activity Feed",
+ "communities": "Communities",
+ "messages": "Messages",
+ "notifications": "Notifications",
+ "go_back": "Go Back",
+ "back": "Back",
+ "yeahs": "Yeahs",
+ "more": "Load More Posts",
+ "no_posts": "No Posts",
+ "private": "Private",
+ "close": "Close",
+ "save": "Save",
+ "exit": "Exit",
+ "next": "Next"
+ },
+ "all_communities": {
+ "text": "All Communities",
+ "announcements": "Announcements",
+ "ann_string": "Click here to view recent announcements!",
+ "popular_places": "Popular Places",
+ "new_communities": "New Communities",
+ "show_all": "Show All",
+ "search": "Search communities..."
+ },
+ "community": {
+ "follow": "Follow Community",
+ "following": "Following",
+ "followers": "Followers",
+ "posts": "Posts",
+ "tags": "Tags",
+ "recent": "Recent Posts",
+ "popular": "Popular Posts",
+ "verified": "Verified Posts",
+ "new": "New Post"
+ },
+ "user_page": {
+ "country": "Country",
+ "birthday": "Birthday",
+ "game_experience": "Game Experience",
+ "posts": "Posts",
+ "friends": "Friends",
+ "following": "Following",
+ "followers": "Followers",
+ "follow_user": "Follow",
+ "following_user": "Following",
+ "befriend": "Befriend",
+ "pending": "Pending",
+ "unfriend": "Unfriend",
+ "no_friends": "No Friends",
+ "no_following": "Not Following Anyone",
+ "no_followers": "No Followers"
+ },
+ "user_settings": {
+ "profile_settings": "Profile Settings",
+ "show_country": "Show Country on Profile",
+ "show_birthday": "Show Birthday on Profile",
+ "show_game": "Show Game Experience on Profile",
+ "show_comment": "Show Comment on Profile",
+ "profile_comment": "Profile Comment",
+ "swearing": "Profile comment cannot contain explicit language."
+ },
+ "activity_feed": {
+ "empty": "It's empty here. Try following someone!"
+ },
+ "notifications": {
+ "none": "No notifications.",
+ "new_follower": "followed you!"
+ },
+ "new_post": {
+ "new_post_text": "New Post",
+ "post_to": "Post to",
+ "text_hint": "Tap here to make a post.",
+ "swearing": "Post cannot contain explicit language."
+ },
+ "messages": {
+ "coming_soon": "Messages isn't ready yet. Check back soon!"
+ },
+ "setup": {
+ "welcome": "Welcome to Juxtaposition!",
+ "welcome_text": "Juxt is a gaming community that connects people from all over the world using Mii characters. Use Juxt to share your gaming experiences and meet people from around the world.",
+ "beta": "Beta Disclaimer",
+ "beta_text": {
+ "fisrt": "You are about to try out the first public beta of Juxt. This means that a lot is still up in the air, and a lot can change at any time.",
+ "second": "This can and may include a total wipe of the database at the conclusion or during the beta period.",
+ "third": "The website, its software and all content found on it are provided on an “as is” and “as available” basis. The Pretendo Network does not give any warranties, whether express or implied, as to the suitability or usability of the website, its software or any of its content."
+ },
+ "info": "What is Juxtaposition?",
+ "info_text": "Juxt is a user-driven gaming community where you can interact with people\n all over the world. You can write or draw posts in game communities or send messages directly to your friends.",
+ "rules": "Juxt Rules",
+ "rules_text": {
+ "first": "The following are some important guidelines for making Juxt a fun and enjoyable experience for everyone. The Juxt Code of Conduct contains detailed information, so please read it carefully.",
+ "second": "Posts Can Be Viewed Around the World",
+ "third": "Juxt contains many gaming communities where people from all over the world can share their thoughts. When you post in a community, remember that everyone can see it, so please express yourself in a way that everyone can enjoy. Use common sense, and think before you post. Juxt is a service that is also accessible from the Internet, so bear in mind that people who don't use Juxt may also see your posts. Additionally, any comments you make on your friends’ posts will be seen not by just your friends but by people around the world, too. Please keep this in mind.",
+ "fourth": "Be Nice to One Another",
+ "fifth": "In order to keep Juxt a fun place for everyone, we ask that you be considerate to other users. Help us keep Juxt an enjoyable experience by not posting anything inappropriate or offensive.",
+ "sixth": "Do Not Post Personal Information—Yours or Others’",
+ "seventh": "Remember, knowing someone in Juxt isn’t the same as knowing them in real life. Never share your e-mail address, home address, work or school name, or other personally identifying information with anyone on Juxt, and never share anyone else's information either. Additionally, if someone you meet in Juxt invites you to meet him or her in the real world, do not accept. Juxt is an online community and should not be used to arrange real-world meet-ups.",
+ "eighth": "Don’t Post Spoilers",
+ "ninth": "Some people come to Juxt looking for tips and tricks for games, but others want to discover a game's secrets all on their own. Posts that reveal secrets of a game or its story are called \"spoilers.\" If you're posting something about a game that might be a spoiler, be sure to check the Spoilers box before sending your post. This way, people who don't want to be spoiled won't see your post.",
+ "tenth": "Code of Conduct Violations",
+ "eleventh": "Our goal is to keep Juxt fun and enjoyable for everyone. In the event that someone violates the Juxt Code of Conduct, we will take appropriate action, up to and including blocking the offending user or console.",
+ "twelfth": "Have You Played That Game?",
+ "thirteenth": "If you're posting in the community for a game you've played, your posts will have an icon indicating that you've played it."
+ },
+ "experience": "Game Experience",
+ "experience_text": {
+ "info": "Please tell us how you would describe your level of experience with games. You can change this setting later.",
+ "beginner": "Beginner",
+ "intermediate": "Intermediate",
+ "expert": "Expert"
+ },
+ "google": "Google Analytics",
+ "google_text": "Juxtaposition uses Google Analytics in order to track how users are using our service. The data collected includes but is not limited to time of visit, pages visited, and time spent on the site. This data is not attached to you in any way, and is not used for advertisements by us or Google.",
+ "ready": "Ready to Start Using Juxt",
+ "ready_text": "First check out some communities and see what people from all over the world are posting about. Take this opportunity to familiarize yourself with Juxt. You might make some new discoveries along the way!",
+ "done": "Have fun in Juxt!",
+ "done_button": "Let's Go!",
+ "guest": "Guest Mode",
+ "guest_text": "We can't verify your account at the moment, which likely means your are currently logging in with a Nintendo Network account. You will still be able to browse juxt, but you will not be able to Yeah! posts or make posts of your own till you log in with a Pretendo Network account. For more information check the Discord server.",
+ "guest_button": "I Understand"
+ }
+}
\ No newline at end of file
diff --git a/src/translations/es.json b/src/translations/es.json
new file mode 100644
index 0000000..3bf162a
--- /dev/null
+++ b/src/translations/es.json
@@ -0,0 +1,126 @@
+{
+ "language": "Spanish",
+ "global": {
+ "user_page": "User Page",
+ "activity_feed": "Activity Feed",
+ "communities": "Communities",
+ "messages": "Messages",
+ "notifications": "Notifications",
+ "go_back": "Go Back",
+ "back": "Back",
+ "yeahs": "Yeahs",
+ "more": "Load More Posts",
+ "no_posts": "No Posts",
+ "private": "Private",
+ "close": "Close",
+ "save": "Save",
+ "exit": "Exit",
+ "next": "Next"
+ },
+ "all_communities": {
+ "text": "All Communities",
+ "announcements": "Announcements",
+ "ann_string": "Click here to view recent announcements!",
+ "popular_places": "Popular Places",
+ "new_communities": "New Communities",
+ "show_all": "Show All",
+ "search": "Search communities..."
+ },
+ "community": {
+ "follow": "Follow Community",
+ "following": "Following",
+ "followers": "Followers",
+ "posts": "Posts",
+ "tags": "Tags",
+ "recent": "Recent Posts",
+ "popular": "Popular Posts",
+ "verified": "Verified Posts",
+ "new": "New Post"
+ },
+ "user_page": {
+ "country": "Country",
+ "birthday": "Birthday",
+ "game_experience": "Game Experience",
+ "posts": "Posts",
+ "friends": "Friends",
+ "following": "Following",
+ "followers": "Followers",
+ "follow_user": "Follow",
+ "following_user": "Following",
+ "befriend": "Befriend",
+ "pending": "Pending",
+ "unfriend": "Unfriend",
+ "no_friends": "No Friends",
+ "no_following": "Not Following Anyone",
+ "no_followers": "No Followers"
+ },
+ "user_settings": {
+ "profile_settings": "Profile Settings",
+ "show_country": "Show Country on Profile",
+ "show_birthday": "Show Birthday on Profile",
+ "show_game": "Show Game Experience on Profile",
+ "show_comment": "Show Comment on Profile",
+ "profile_comment": "Profile Comment",
+ "swearing": "Profile comment cannot contain explicit language."
+ },
+ "activity_feed": {
+ "empty": "It's empty here. Try following someone!"
+ },
+ "notifications": {
+ "none": "No notifications.",
+ "new_follower": "followed you!"
+ },
+ "new_post": {
+ "new_post_text": "New Post",
+ "post_to": "Post to",
+ "text_hint": "Tap here to make a post.",
+ "swearing": "Post cannot contain explicit language."
+ },
+ "messages": {
+ "coming_soon": "Messages isn't ready yet. Check back soon!"
+ },
+ "setup": {
+ "welcome": "Welcome to Juxtaposition!",
+ "welcome_text": "Juxt is a gaming community that connects people from all over the world using Mii characters. Use Juxt to share your gaming experiences and meet people from around the world.",
+ "beta": "Beta Disclaimer",
+ "beta_text": {
+ "fisrt": "You are about to try out the first public beta of Juxt. This means that a lot is still up in the air, and a lot can change at any time.",
+ "second": "This can and may include a total wipe of the database at the conclusion or during the beta period.",
+ "third": "The website, its software and all content found on it are provided on an “as is” and “as available” basis. The Pretendo Network does not give any warranties, whether express or implied, as to the suitability or usability of the website, its software or any of its content."
+ },
+ "info": "What is Juxtaposition?",
+ "info_text": "Juxt is a user-driven gaming community where you can interact with people\n all over the world. You can write or draw posts in game communities or send messages directly to your friends.",
+ "rules": "Juxt Rules",
+ "rules_text": {
+ "first": "The following are some important guidelines for making Juxt a fun and enjoyable experience for everyone. The Juxt Code of Conduct contains detailed information, so please read it carefully.",
+ "second": "Posts Can Be Viewed Around the World",
+ "third": "Juxt contains many gaming communities where people from all over the world can share their thoughts. When you post in a community, remember that everyone can see it, so please express yourself in a way that everyone can enjoy. Use common sense, and think before you post. Juxt is a service that is also accessible from the Internet, so bear in mind that people who don't use Juxt may also see your posts. Additionally, any comments you make on your friends’ posts will be seen not by just your friends but by people around the world, too. Please keep this in mind.",
+ "fourth": "Be Nice to One Another",
+ "fifth": "In order to keep Juxt a fun place for everyone, we ask that you be considerate to other users. Help us keep Juxt an enjoyable experience by not posting anything inappropriate or offensive.",
+ "sixth": "Do Not Post Personal Information—Yours or Others’",
+ "seventh": "Remember, knowing someone in Juxt isn’t the same as knowing them in real life. Never share your e-mail address, home address, work or school name, or other personally identifying information with anyone on Juxt, and never share anyone else's information either. Additionally, if someone you meet in Juxt invites you to meet him or her in the real world, do not accept. Juxt is an online community and should not be used to arrange real-world meet-ups.",
+ "eighth": "Don’t Post Spoilers",
+ "ninth": "Some people come to Juxt looking for tips and tricks for games, but others want to discover a game's secrets all on their own. Posts that reveal secrets of a game or its story are called \"spoilers.\" If you're posting something about a game that might be a spoiler, be sure to check the Spoilers box before sending your post. This way, people who don't want to be spoiled won't see your post.",
+ "tenth": "Code of Conduct Violations",
+ "eleventh": "Our goal is to keep Juxt fun and enjoyable for everyone. In the event that someone violates the Juxt Code of Conduct, we will take appropriate action, up to and including blocking the offending user or console.",
+ "twelfth": "Have You Played That Game?",
+ "thirteenth": "If you're posting in the community for a game you've played, your posts will have an icon indicating that you've played it."
+ },
+ "experience": "Game Experience",
+ "experience_text": {
+ "info": "Please tell us how you would describe your level of experience with games. You can change this setting later.",
+ "beginner": "Beginner",
+ "intermediate": "Intermediate",
+ "expert": "Expert"
+ },
+ "google": "Google Analytics",
+ "google_text": "Juxtaposition uses Google Analytics in order to track how users are using our service. The data collected includes but is not limited to time of visit, pages visited, and time spent on the site. This data is not attached to you in any way, and is not used for advertisements by us or Google.",
+ "ready": "Ready to Start Using Juxt",
+ "ready_text": "First check out some communities and see what people from all over the world are posting about. Take this opportunity to familiarize yourself with Juxt. You might make some new discoveries along the way!",
+ "done": "Have fun in Juxt!",
+ "done_button": "Let's Go!",
+ "guest": "Guest Mode",
+ "guest_text": "We can't verify your account at the moment, which likely means your are currently logging in with a Nintendo Network account. You will still be able to browse juxt, but you will not be able to Yeah! posts or make posts of your own till you log in with a Pretendo Network account. For more information check the Discord server.",
+ "guest_button": "I Understand"
+ }
+}
\ No newline at end of file
diff --git a/src/translations/fr.json b/src/translations/fr.json
new file mode 100644
index 0000000..fcf0357
--- /dev/null
+++ b/src/translations/fr.json
@@ -0,0 +1,126 @@
+{
+ "language": "French",
+ "global": {
+ "user_page": "User Page",
+ "activity_feed": "Activity Feed",
+ "communities": "Communities",
+ "messages": "Messages",
+ "notifications": "Notifications",
+ "go_back": "Go Back",
+ "back": "Back",
+ "yeahs": "Yeahs",
+ "more": "Load More Posts",
+ "no_posts": "No Posts",
+ "private": "Private",
+ "close": "Close",
+ "save": "Save",
+ "exit": "Exit",
+ "next": "Next"
+ },
+ "all_communities": {
+ "text": "All Communities",
+ "announcements": "Announcements",
+ "ann_string": "Click here to view recent announcements!",
+ "popular_places": "Popular Places",
+ "new_communities": "New Communities",
+ "show_all": "Show All",
+ "search": "Search communities..."
+ },
+ "community": {
+ "follow": "Follow Community",
+ "following": "Following",
+ "followers": "Followers",
+ "posts": "Posts",
+ "tags": "Tags",
+ "recent": "Recent Posts",
+ "popular": "Popular Posts",
+ "verified": "Verified Posts",
+ "new": "New Post"
+ },
+ "user_page": {
+ "country": "Country",
+ "birthday": "Birthday",
+ "game_experience": "Game Experience",
+ "posts": "Posts",
+ "friends": "Friends",
+ "following": "Following",
+ "followers": "Followers",
+ "follow_user": "Follow",
+ "following_user": "Following",
+ "befriend": "Befriend",
+ "pending": "Pending",
+ "unfriend": "Unfriend",
+ "no_friends": "No Friends",
+ "no_following": "Not Following Anyone",
+ "no_followers": "No Followers"
+ },
+ "user_settings": {
+ "profile_settings": "Profile Settings",
+ "show_country": "Show Country on Profile",
+ "show_birthday": "Show Birthday on Profile",
+ "show_game": "Show Game Experience on Profile",
+ "show_comment": "Show Comment on Profile",
+ "profile_comment": "Profile Comment",
+ "swearing": "Profile comment cannot contain explicit language."
+ },
+ "activity_feed": {
+ "empty": "It's empty here. Try following someone!"
+ },
+ "notifications": {
+ "none": "No notifications.",
+ "new_follower": "followed you!"
+ },
+ "new_post": {
+ "new_post_text": "New Post",
+ "post_to": "Post to",
+ "text_hint": "Tap here to make a post.",
+ "swearing": "Post cannot contain explicit language."
+ },
+ "messages": {
+ "coming_soon": "Messages isn't ready yet. Check back soon!"
+ },
+ "setup": {
+ "welcome": "Welcome to Juxtaposition!",
+ "welcome_text": "Juxt is a gaming community that connects people from all over the world using Mii characters. Use Juxt to share your gaming experiences and meet people from around the world.",
+ "beta": "Beta Disclaimer",
+ "beta_text": {
+ "fisrt": "You are about to try out the first public beta of Juxt. This means that a lot is still up in the air, and a lot can change at any time.",
+ "second": "This can and may include a total wipe of the database at the conclusion or during the beta period.",
+ "third": "The website, its software and all content found on it are provided on an “as is” and “as available” basis. The Pretendo Network does not give any warranties, whether express or implied, as to the suitability or usability of the website, its software or any of its content."
+ },
+ "info": "What is Juxtaposition?",
+ "info_text": "Juxt is a user-driven gaming community where you can interact with people\n all over the world. You can write or draw posts in game communities or send messages directly to your friends.",
+ "rules": "Juxt Rules",
+ "rules_text": {
+ "first": "The following are some important guidelines for making Juxt a fun and enjoyable experience for everyone. The Juxt Code of Conduct contains detailed information, so please read it carefully.",
+ "second": "Posts Can Be Viewed Around the World",
+ "third": "Juxt contains many gaming communities where people from all over the world can share their thoughts. When you post in a community, remember that everyone can see it, so please express yourself in a way that everyone can enjoy. Use common sense, and think before you post. Juxt is a service that is also accessible from the Internet, so bear in mind that people who don't use Juxt may also see your posts. Additionally, any comments you make on your friends’ posts will be seen not by just your friends but by people around the world, too. Please keep this in mind.",
+ "fourth": "Be Nice to One Another",
+ "fifth": "In order to keep Juxt a fun place for everyone, we ask that you be considerate to other users. Help us keep Juxt an enjoyable experience by not posting anything inappropriate or offensive.",
+ "sixth": "Do Not Post Personal Information—Yours or Others’",
+ "seventh": "Remember, knowing someone in Juxt isn’t the same as knowing them in real life. Never share your e-mail address, home address, work or school name, or other personally identifying information with anyone on Juxt, and never share anyone else's information either. Additionally, if someone you meet in Juxt invites you to meet him or her in the real world, do not accept. Juxt is an online community and should not be used to arrange real-world meet-ups.",
+ "eighth": "Don’t Post Spoilers",
+ "ninth": "Some people come to Juxt looking for tips and tricks for games, but others want to discover a game's secrets all on their own. Posts that reveal secrets of a game or its story are called \"spoilers.\" If you're posting something about a game that might be a spoiler, be sure to check the Spoilers box before sending your post. This way, people who don't want to be spoiled won't see your post.",
+ "tenth": "Code of Conduct Violations",
+ "eleventh": "Our goal is to keep Juxt fun and enjoyable for everyone. In the event that someone violates the Juxt Code of Conduct, we will take appropriate action, up to and including blocking the offending user or console.",
+ "twelfth": "Have You Played That Game?",
+ "thirteenth": "If you're posting in the community for a game you've played, your posts will have an icon indicating that you've played it."
+ },
+ "experience": "Game Experience",
+ "experience_text": {
+ "info": "Please tell us how you would describe your level of experience with games. You can change this setting later.",
+ "beginner": "Beginner",
+ "intermediate": "Intermediate",
+ "expert": "Expert"
+ },
+ "google": "Google Analytics",
+ "google_text": "Juxtaposition uses Google Analytics in order to track how users are using our service. The data collected includes but is not limited to time of visit, pages visited, and time spent on the site. This data is not attached to you in any way, and is not used for advertisements by us or Google.",
+ "ready": "Ready to Start Using Juxt",
+ "ready_text": "First check out some communities and see what people from all over the world are posting about. Take this opportunity to familiarize yourself with Juxt. You might make some new discoveries along the way!",
+ "done": "Have fun in Juxt!",
+ "done_button": "Let's Go!",
+ "guest": "Guest Mode",
+ "guest_text": "We can't verify your account at the moment, which likely means your are currently logging in with a Nintendo Network account. You will still be able to browse juxt, but you will not be able to Yeah! posts or make posts of your own till you log in with a Pretendo Network account. For more information check the Discord server.",
+ "guest_button": "I Understand"
+ }
+}
\ No newline at end of file
diff --git a/src/translations/index.js b/src/translations/index.js
new file mode 100644
index 0000000..4aecb45
--- /dev/null
+++ b/src/translations/index.js
@@ -0,0 +1,14 @@
+module.exports = {
+ JA: require('./ja.json'),
+ EN: require('./en.json'),
+ FR: require('./fr.json'),
+ DE: require('./de.json'),
+ IT: require('./it.json'),
+ ES: require('./es.json'),
+ ZH: require('./zh.json'),
+ KO: require('./ko.json'),
+ NL: require('./nl.json'),
+ PT: require('./pt.json'),
+ RU: require('./ru.json'),
+
+};
\ No newline at end of file
diff --git a/src/translations/it.json b/src/translations/it.json
new file mode 100644
index 0000000..f087f63
--- /dev/null
+++ b/src/translations/it.json
@@ -0,0 +1,126 @@
+{
+ "language": "Italian",
+ "global": {
+ "user_page": "User Page",
+ "activity_feed": "Activity Feed",
+ "communities": "Communities",
+ "messages": "Messages",
+ "notifications": "Notifications",
+ "go_back": "Go Back",
+ "back": "Back",
+ "yeahs": "Yeahs",
+ "more": "Load More Posts",
+ "no_posts": "No Posts",
+ "private": "Private",
+ "close": "Close",
+ "save": "Save",
+ "exit": "Exit",
+ "next": "Next"
+ },
+ "all_communities": {
+ "text": "All Communities",
+ "announcements": "Announcements",
+ "ann_string": "Click here to view recent announcements!",
+ "popular_places": "Popular Places",
+ "new_communities": "New Communities",
+ "show_all": "Show All",
+ "search": "Search communities..."
+ },
+ "community": {
+ "follow": "Follow Community",
+ "following": "Following",
+ "followers": "Followers",
+ "posts": "Posts",
+ "tags": "Tags",
+ "recent": "Recent Posts",
+ "popular": "Popular Posts",
+ "verified": "Verified Posts",
+ "new": "New Post"
+ },
+ "user_page": {
+ "country": "Country",
+ "birthday": "Birthday",
+ "game_experience": "Game Experience",
+ "posts": "Posts",
+ "friends": "Friends",
+ "following": "Following",
+ "followers": "Followers",
+ "follow_user": "Follow",
+ "following_user": "Following",
+ "befriend": "Befriend",
+ "pending": "Pending",
+ "unfriend": "Unfriend",
+ "no_friends": "No Friends",
+ "no_following": "Not Following Anyone",
+ "no_followers": "No Followers"
+ },
+ "user_settings": {
+ "profile_settings": "Profile Settings",
+ "show_country": "Show Country on Profile",
+ "show_birthday": "Show Birthday on Profile",
+ "show_game": "Show Game Experience on Profile",
+ "show_comment": "Show Comment on Profile",
+ "profile_comment": "Profile Comment",
+ "swearing": "Profile comment cannot contain explicit language."
+ },
+ "activity_feed": {
+ "empty": "It's empty here. Try following someone!"
+ },
+ "notifications": {
+ "none": "No notifications.",
+ "new_follower": "followed you!"
+ },
+ "new_post": {
+ "new_post_text": "New Post",
+ "post_to": "Post to",
+ "text_hint": "Tap here to make a post.",
+ "swearing": "Post cannot contain explicit language."
+ },
+ "messages": {
+ "coming_soon": "Messages isn't ready yet. Check back soon!"
+ },
+ "setup": {
+ "welcome": "Welcome to Juxtaposition!",
+ "welcome_text": "Juxt is a gaming community that connects people from all over the world using Mii characters. Use Juxt to share your gaming experiences and meet people from around the world.",
+ "beta": "Beta Disclaimer",
+ "beta_text": {
+ "fisrt": "You are about to try out the first public beta of Juxt. This means that a lot is still up in the air, and a lot can change at any time.",
+ "second": "This can and may include a total wipe of the database at the conclusion or during the beta period.",
+ "third": "The website, its software and all content found on it are provided on an “as is” and “as available” basis. The Pretendo Network does not give any warranties, whether express or implied, as to the suitability or usability of the website, its software or any of its content."
+ },
+ "info": "What is Juxtaposition?",
+ "info_text": "Juxt is a user-driven gaming community where you can interact with people\n all over the world. You can write or draw posts in game communities or send messages directly to your friends.",
+ "rules": "Juxt Rules",
+ "rules_text": {
+ "first": "The following are some important guidelines for making Juxt a fun and enjoyable experience for everyone. The Juxt Code of Conduct contains detailed information, so please read it carefully.",
+ "second": "Posts Can Be Viewed Around the World",
+ "third": "Juxt contains many gaming communities where people from all over the world can share their thoughts. When you post in a community, remember that everyone can see it, so please express yourself in a way that everyone can enjoy. Use common sense, and think before you post. Juxt is a service that is also accessible from the Internet, so bear in mind that people who don't use Juxt may also see your posts. Additionally, any comments you make on your friends’ posts will be seen not by just your friends but by people around the world, too. Please keep this in mind.",
+ "fourth": "Be Nice to One Another",
+ "fifth": "In order to keep Juxt a fun place for everyone, we ask that you be considerate to other users. Help us keep Juxt an enjoyable experience by not posting anything inappropriate or offensive.",
+ "sixth": "Do Not Post Personal Information—Yours or Others’",
+ "seventh": "Remember, knowing someone in Juxt isn’t the same as knowing them in real life. Never share your e-mail address, home address, work or school name, or other personally identifying information with anyone on Juxt, and never share anyone else's information either. Additionally, if someone you meet in Juxt invites you to meet him or her in the real world, do not accept. Juxt is an online community and should not be used to arrange real-world meet-ups.",
+ "eighth": "Don’t Post Spoilers",
+ "ninth": "Some people come to Juxt looking for tips and tricks for games, but others want to discover a game's secrets all on their own. Posts that reveal secrets of a game or its story are called \"spoilers.\" If you're posting something about a game that might be a spoiler, be sure to check the Spoilers box before sending your post. This way, people who don't want to be spoiled won't see your post.",
+ "tenth": "Code of Conduct Violations",
+ "eleventh": "Our goal is to keep Juxt fun and enjoyable for everyone. In the event that someone violates the Juxt Code of Conduct, we will take appropriate action, up to and including blocking the offending user or console.",
+ "twelfth": "Have You Played That Game?",
+ "thirteenth": "If you're posting in the community for a game you've played, your posts will have an icon indicating that you've played it."
+ },
+ "experience": "Game Experience",
+ "experience_text": {
+ "info": "Please tell us how you would describe your level of experience with games. You can change this setting later.",
+ "beginner": "Beginner",
+ "intermediate": "Intermediate",
+ "expert": "Expert"
+ },
+ "google": "Google Analytics",
+ "google_text": "Juxtaposition uses Google Analytics in order to track how users are using our service. The data collected includes but is not limited to time of visit, pages visited, and time spent on the site. This data is not attached to you in any way, and is not used for advertisements by us or Google.",
+ "ready": "Ready to Start Using Juxt",
+ "ready_text": "First check out some communities and see what people from all over the world are posting about. Take this opportunity to familiarize yourself with Juxt. You might make some new discoveries along the way!",
+ "done": "Have fun in Juxt!",
+ "done_button": "Let's Go!",
+ "guest": "Guest Mode",
+ "guest_text": "We can't verify your account at the moment, which likely means your are currently logging in with a Nintendo Network account. You will still be able to browse juxt, but you will not be able to Yeah! posts or make posts of your own till you log in with a Pretendo Network account. For more information check the Discord server.",
+ "guest_button": "I Understand"
+ }
+}
\ No newline at end of file
diff --git a/src/translations/ja.json b/src/translations/ja.json
new file mode 100644
index 0000000..058c899
--- /dev/null
+++ b/src/translations/ja.json
@@ -0,0 +1,126 @@
+{
+ "language": "Japanese",
+ "global": {
+ "user_page": "User Page",
+ "activity_feed": "Activity Feed",
+ "communities": "Communities",
+ "messages": "Messages",
+ "notifications": "Notifications",
+ "go_back": "Go Back",
+ "back": "Back",
+ "yeahs": "Yeahs",
+ "more": "Load More Posts",
+ "no_posts": "No Posts",
+ "private": "Private",
+ "close": "Close",
+ "save": "Save",
+ "exit": "Exit",
+ "next": "Next"
+ },
+ "all_communities": {
+ "text": "All Communities",
+ "announcements": "Announcements",
+ "ann_string": "Click here to view recent announcements!",
+ "popular_places": "Popular Places",
+ "new_communities": "New Communities",
+ "show_all": "Show All",
+ "search": "Search communities..."
+ },
+ "community": {
+ "follow": "Follow Community",
+ "following": "Following",
+ "followers": "Followers",
+ "posts": "Posts",
+ "tags": "Tags",
+ "recent": "Recent Posts",
+ "popular": "Popular Posts",
+ "verified": "Verified Posts",
+ "new": "New Post"
+ },
+ "user_page": {
+ "country": "Country",
+ "birthday": "Birthday",
+ "game_experience": "Game Experience",
+ "posts": "Posts",
+ "friends": "Friends",
+ "following": "Following",
+ "followers": "Followers",
+ "follow_user": "Follow",
+ "following_user": "Following",
+ "befriend": "Befriend",
+ "pending": "Pending",
+ "unfriend": "Unfriend",
+ "no_friends": "No Friends",
+ "no_following": "Not Following Anyone",
+ "no_followers": "No Followers"
+ },
+ "user_settings": {
+ "profile_settings": "Profile Settings",
+ "show_country": "Show Country on Profile",
+ "show_birthday": "Show Birthday on Profile",
+ "show_game": "Show Game Experience on Profile",
+ "show_comment": "Show Comment on Profile",
+ "profile_comment": "Profile Comment",
+ "swearing": "Profile comment cannot contain explicit language."
+ },
+ "activity_feed": {
+ "empty": "It's empty here. Try following someone!"
+ },
+ "notifications": {
+ "none": "No notifications.",
+ "new_follower": "followed you!"
+ },
+ "new_post": {
+ "new_post_text": "New Post",
+ "post_to": "Post to",
+ "text_hint": "Tap here to make a post.",
+ "swearing": "Post cannot contain explicit language."
+ },
+ "messages": {
+ "coming_soon": "Messages isn't ready yet. Check back soon!"
+ },
+ "setup": {
+ "welcome": "Welcome to Juxtaposition!",
+ "welcome_text": "Juxt is a gaming community that connects people from all over the world using Mii characters. Use Juxt to share your gaming experiences and meet people from around the world.",
+ "beta": "Beta Disclaimer",
+ "beta_text": {
+ "fisrt": "You are about to try out the first public beta of Juxt. This means that a lot is still up in the air, and a lot can change at any time.",
+ "second": "This can and may include a total wipe of the database at the conclusion or during the beta period.",
+ "third": "The website, its software and all content found on it are provided on an “as is” and “as available” basis. The Pretendo Network does not give any warranties, whether express or implied, as to the suitability or usability of the website, its software or any of its content."
+ },
+ "info": "What is Juxtaposition?",
+ "info_text": "Juxt is a user-driven gaming community where you can interact with people\n all over the world. You can write or draw posts in game communities or send messages directly to your friends.",
+ "rules": "Juxt Rules",
+ "rules_text": {
+ "first": "The following are some important guidelines for making Juxt a fun and enjoyable experience for everyone. The Juxt Code of Conduct contains detailed information, so please read it carefully.",
+ "second": "Posts Can Be Viewed Around the World",
+ "third": "Juxt contains many gaming communities where people from all over the world can share their thoughts. When you post in a community, remember that everyone can see it, so please express yourself in a way that everyone can enjoy. Use common sense, and think before you post. Juxt is a service that is also accessible from the Internet, so bear in mind that people who don't use Juxt may also see your posts. Additionally, any comments you make on your friends’ posts will be seen not by just your friends but by people around the world, too. Please keep this in mind.",
+ "fourth": "Be Nice to One Another",
+ "fifth": "In order to keep Juxt a fun place for everyone, we ask that you be considerate to other users. Help us keep Juxt an enjoyable experience by not posting anything inappropriate or offensive.",
+ "sixth": "Do Not Post Personal Information—Yours or Others’",
+ "seventh": "Remember, knowing someone in Juxt isn’t the same as knowing them in real life. Never share your e-mail address, home address, work or school name, or other personally identifying information with anyone on Juxt, and never share anyone else's information either. Additionally, if someone you meet in Juxt invites you to meet him or her in the real world, do not accept. Juxt is an online community and should not be used to arrange real-world meet-ups.",
+ "eighth": "Don’t Post Spoilers",
+ "ninth": "Some people come to Juxt looking for tips and tricks for games, but others want to discover a game's secrets all on their own. Posts that reveal secrets of a game or its story are called \"spoilers.\" If you're posting something about a game that might be a spoiler, be sure to check the Spoilers box before sending your post. This way, people who don't want to be spoiled won't see your post.",
+ "tenth": "Code of Conduct Violations",
+ "eleventh": "Our goal is to keep Juxt fun and enjoyable for everyone. In the event that someone violates the Juxt Code of Conduct, we will take appropriate action, up to and including blocking the offending user or console.",
+ "twelfth": "Have You Played That Game?",
+ "thirteenth": "If you're posting in the community for a game you've played, your posts will have an icon indicating that you've played it."
+ },
+ "experience": "Game Experience",
+ "experience_text": {
+ "info": "Please tell us how you would describe your level of experience with games. You can change this setting later.",
+ "beginner": "Beginner",
+ "intermediate": "Intermediate",
+ "expert": "Expert"
+ },
+ "google": "Google Analytics",
+ "google_text": "Juxtaposition uses Google Analytics in order to track how users are using our service. The data collected includes but is not limited to time of visit, pages visited, and time spent on the site. This data is not attached to you in any way, and is not used for advertisements by us or Google.",
+ "ready": "Ready to Start Using Juxt",
+ "ready_text": "First check out some communities and see what people from all over the world are posting about. Take this opportunity to familiarize yourself with Juxt. You might make some new discoveries along the way!",
+ "done": "Have fun in Juxt!",
+ "done_button": "Let's Go!",
+ "guest": "Guest Mode",
+ "guest_text": "We can't verify your account at the moment, which likely means your are currently logging in with a Nintendo Network account. You will still be able to browse juxt, but you will not be able to Yeah! posts or make posts of your own till you log in with a Pretendo Network account. For more information check the Discord server.",
+ "guest_button": "I Understand"
+ }
+}
\ No newline at end of file
diff --git a/src/translations/ko.json b/src/translations/ko.json
new file mode 100644
index 0000000..eac9fbd
--- /dev/null
+++ b/src/translations/ko.json
@@ -0,0 +1,126 @@
+{
+ "language": "Korean",
+ "global": {
+ "user_page": "User Page",
+ "activity_feed": "Activity Feed",
+ "communities": "Communities",
+ "messages": "Messages",
+ "notifications": "Notifications",
+ "go_back": "Go Back",
+ "back": "Back",
+ "yeahs": "Yeahs",
+ "more": "Load More Posts",
+ "no_posts": "No Posts",
+ "private": "Private",
+ "close": "Close",
+ "save": "Save",
+ "exit": "Exit",
+ "next": "Next"
+ },
+ "all_communities": {
+ "text": "All Communities",
+ "announcements": "Announcements",
+ "ann_string": "Click here to view recent announcements!",
+ "popular_places": "Popular Places",
+ "new_communities": "New Communities",
+ "show_all": "Show All",
+ "search": "Search communities..."
+ },
+ "community": {
+ "follow": "Follow Community",
+ "following": "Following",
+ "followers": "Followers",
+ "posts": "Posts",
+ "tags": "Tags",
+ "recent": "Recent Posts",
+ "popular": "Popular Posts",
+ "verified": "Verified Posts",
+ "new": "New Post"
+ },
+ "user_page": {
+ "country": "Country",
+ "birthday": "Birthday",
+ "game_experience": "Game Experience",
+ "posts": "Posts",
+ "friends": "Friends",
+ "following": "Following",
+ "followers": "Followers",
+ "follow_user": "Follow",
+ "following_user": "Following",
+ "befriend": "Befriend",
+ "pending": "Pending",
+ "unfriend": "Unfriend",
+ "no_friends": "No Friends",
+ "no_following": "Not Following Anyone",
+ "no_followers": "No Followers"
+ },
+ "user_settings": {
+ "profile_settings": "Profile Settings",
+ "show_country": "Show Country on Profile",
+ "show_birthday": "Show Birthday on Profile",
+ "show_game": "Show Game Experience on Profile",
+ "show_comment": "Show Comment on Profile",
+ "profile_comment": "Profile Comment",
+ "swearing": "Profile comment cannot contain explicit language."
+ },
+ "activity_feed": {
+ "empty": "It's empty here. Try following someone!"
+ },
+ "notifications": {
+ "none": "No notifications.",
+ "new_follower": "followed you!"
+ },
+ "new_post": {
+ "new_post_text": "New Post",
+ "post_to": "Post to",
+ "text_hint": "Tap here to make a post.",
+ "swearing": "Post cannot contain explicit language."
+ },
+ "messages": {
+ "coming_soon": "Messages isn't ready yet. Check back soon!"
+ },
+ "setup": {
+ "welcome": "Welcome to Juxtaposition!",
+ "welcome_text": "Juxt is a gaming community that connects people from all over the world using Mii characters. Use Juxt to share your gaming experiences and meet people from around the world.",
+ "beta": "Beta Disclaimer",
+ "beta_text": {
+ "fisrt": "You are about to try out the first public beta of Juxt. This means that a lot is still up in the air, and a lot can change at any time.",
+ "second": "This can and may include a total wipe of the database at the conclusion or during the beta period.",
+ "third": "The website, its software and all content found on it are provided on an “as is” and “as available” basis. The Pretendo Network does not give any warranties, whether express or implied, as to the suitability or usability of the website, its software or any of its content."
+ },
+ "info": "What is Juxtaposition?",
+ "info_text": "Juxt is a user-driven gaming community where you can interact with people\n all over the world. You can write or draw posts in game communities or send messages directly to your friends.",
+ "rules": "Juxt Rules",
+ "rules_text": {
+ "first": "The following are some important guidelines for making Juxt a fun and enjoyable experience for everyone. The Juxt Code of Conduct contains detailed information, so please read it carefully.",
+ "second": "Posts Can Be Viewed Around the World",
+ "third": "Juxt contains many gaming communities where people from all over the world can share their thoughts. When you post in a community, remember that everyone can see it, so please express yourself in a way that everyone can enjoy. Use common sense, and think before you post. Juxt is a service that is also accessible from the Internet, so bear in mind that people who don't use Juxt may also see your posts. Additionally, any comments you make on your friends’ posts will be seen not by just your friends but by people around the world, too. Please keep this in mind.",
+ "fourth": "Be Nice to One Another",
+ "fifth": "In order to keep Juxt a fun place for everyone, we ask that you be considerate to other users. Help us keep Juxt an enjoyable experience by not posting anything inappropriate or offensive.",
+ "sixth": "Do Not Post Personal Information—Yours or Others’",
+ "seventh": "Remember, knowing someone in Juxt isn’t the same as knowing them in real life. Never share your e-mail address, home address, work or school name, or other personally identifying information with anyone on Juxt, and never share anyone else's information either. Additionally, if someone you meet in Juxt invites you to meet him or her in the real world, do not accept. Juxt is an online community and should not be used to arrange real-world meet-ups.",
+ "eighth": "Don’t Post Spoilers",
+ "ninth": "Some people come to Juxt looking for tips and tricks for games, but others want to discover a game's secrets all on their own. Posts that reveal secrets of a game or its story are called \"spoilers.\" If you're posting something about a game that might be a spoiler, be sure to check the Spoilers box before sending your post. This way, people who don't want to be spoiled won't see your post.",
+ "tenth": "Code of Conduct Violations",
+ "eleventh": "Our goal is to keep Juxt fun and enjoyable for everyone. In the event that someone violates the Juxt Code of Conduct, we will take appropriate action, up to and including blocking the offending user or console.",
+ "twelfth": "Have You Played That Game?",
+ "thirteenth": "If you're posting in the community for a game you've played, your posts will have an icon indicating that you've played it."
+ },
+ "experience": "Game Experience",
+ "experience_text": {
+ "info": "Please tell us how you would describe your level of experience with games. You can change this setting later.",
+ "beginner": "Beginner",
+ "intermediate": "Intermediate",
+ "expert": "Expert"
+ },
+ "google": "Google Analytics",
+ "google_text": "Juxtaposition uses Google Analytics in order to track how users are using our service. The data collected includes but is not limited to time of visit, pages visited, and time spent on the site. This data is not attached to you in any way, and is not used for advertisements by us or Google.",
+ "ready": "Ready to Start Using Juxt",
+ "ready_text": "First check out some communities and see what people from all over the world are posting about. Take this opportunity to familiarize yourself with Juxt. You might make some new discoveries along the way!",
+ "done": "Have fun in Juxt!",
+ "done_button": "Let's Go!",
+ "guest": "Guest Mode",
+ "guest_text": "We can't verify your account at the moment, which likely means your are currently logging in with a Nintendo Network account. You will still be able to browse juxt, but you will not be able to Yeah! posts or make posts of your own till you log in with a Pretendo Network account. For more information check the Discord server.",
+ "guest_button": "I Understand"
+ }
+}
\ No newline at end of file
diff --git a/src/translations/nl.json b/src/translations/nl.json
new file mode 100644
index 0000000..85ce535
--- /dev/null
+++ b/src/translations/nl.json
@@ -0,0 +1,126 @@
+{
+ "language": "Dutch",
+ "global": {
+ "user_page": "User Page",
+ "activity_feed": "Activity Feed",
+ "communities": "Communities",
+ "messages": "Messages",
+ "notifications": "Notifications",
+ "go_back": "Go Back",
+ "back": "Back",
+ "yeahs": "Yeahs",
+ "more": "Load More Posts",
+ "no_posts": "No Posts",
+ "private": "Private",
+ "close": "Close",
+ "save": "Save",
+ "exit": "Exit",
+ "next": "Next"
+ },
+ "all_communities": {
+ "text": "All Communities",
+ "announcements": "Announcements",
+ "ann_string": "Click here to view recent announcements!",
+ "popular_places": "Popular Places",
+ "new_communities": "New Communities",
+ "show_all": "Show All",
+ "search": "Search communities..."
+ },
+ "community": {
+ "follow": "Follow Community",
+ "following": "Following",
+ "followers": "Followers",
+ "posts": "Posts",
+ "tags": "Tags",
+ "recent": "Recent Posts",
+ "popular": "Popular Posts",
+ "verified": "Verified Posts",
+ "new": "New Post"
+ },
+ "user_page": {
+ "country": "Country",
+ "birthday": "Birthday",
+ "game_experience": "Game Experience",
+ "posts": "Posts",
+ "friends": "Friends",
+ "following": "Following",
+ "followers": "Followers",
+ "follow_user": "Follow",
+ "following_user": "Following",
+ "befriend": "Befriend",
+ "pending": "Pending",
+ "unfriend": "Unfriend",
+ "no_friends": "No Friends",
+ "no_following": "Not Following Anyone",
+ "no_followers": "No Followers"
+ },
+ "user_settings": {
+ "profile_settings": "Profile Settings",
+ "show_country": "Show Country on Profile",
+ "show_birthday": "Show Birthday on Profile",
+ "show_game": "Show Game Experience on Profile",
+ "show_comment": "Show Comment on Profile",
+ "profile_comment": "Profile Comment",
+ "swearing": "Profile comment cannot contain explicit language."
+ },
+ "activity_feed": {
+ "empty": "It's empty here. Try following someone!"
+ },
+ "notifications": {
+ "none": "No notifications.",
+ "new_follower": "followed you!"
+ },
+ "new_post": {
+ "new_post_text": "New Post",
+ "post_to": "Post to",
+ "text_hint": "Tap here to make a post.",
+ "swearing": "Post cannot contain explicit language."
+ },
+ "messages": {
+ "coming_soon": "Messages isn't ready yet. Check back soon!"
+ },
+ "setup": {
+ "welcome": "Welcome to Juxtaposition!",
+ "welcome_text": "Juxt is a gaming community that connects people from all over the world using Mii characters. Use Juxt to share your gaming experiences and meet people from around the world.",
+ "beta": "Beta Disclaimer",
+ "beta_text": {
+ "fisrt": "You are about to try out the first public beta of Juxt. This means that a lot is still up in the air, and a lot can change at any time.",
+ "second": "This can and may include a total wipe of the database at the conclusion or during the beta period.",
+ "third": "The website, its software and all content found on it are provided on an “as is” and “as available” basis. The Pretendo Network does not give any warranties, whether express or implied, as to the suitability or usability of the website, its software or any of its content."
+ },
+ "info": "What is Juxtaposition?",
+ "info_text": "Juxt is a user-driven gaming community where you can interact with people\n all over the world. You can write or draw posts in game communities or send messages directly to your friends.",
+ "rules": "Juxt Rules",
+ "rules_text": {
+ "first": "The following are some important guidelines for making Juxt a fun and enjoyable experience for everyone. The Juxt Code of Conduct contains detailed information, so please read it carefully.",
+ "second": "Posts Can Be Viewed Around the World",
+ "third": "Juxt contains many gaming communities where people from all over the world can share their thoughts. When you post in a community, remember that everyone can see it, so please express yourself in a way that everyone can enjoy. Use common sense, and think before you post. Juxt is a service that is also accessible from the Internet, so bear in mind that people who don't use Juxt may also see your posts. Additionally, any comments you make on your friends’ posts will be seen not by just your friends but by people around the world, too. Please keep this in mind.",
+ "fourth": "Be Nice to One Another",
+ "fifth": "In order to keep Juxt a fun place for everyone, we ask that you be considerate to other users. Help us keep Juxt an enjoyable experience by not posting anything inappropriate or offensive.",
+ "sixth": "Do Not Post Personal Information—Yours or Others’",
+ "seventh": "Remember, knowing someone in Juxt isn’t the same as knowing them in real life. Never share your e-mail address, home address, work or school name, or other personally identifying information with anyone on Juxt, and never share anyone else's information either. Additionally, if someone you meet in Juxt invites you to meet him or her in the real world, do not accept. Juxt is an online community and should not be used to arrange real-world meet-ups.",
+ "eighth": "Don’t Post Spoilers",
+ "ninth": "Some people come to Juxt looking for tips and tricks for games, but others want to discover a game's secrets all on their own. Posts that reveal secrets of a game or its story are called \"spoilers.\" If you're posting something about a game that might be a spoiler, be sure to check the Spoilers box before sending your post. This way, people who don't want to be spoiled won't see your post.",
+ "tenth": "Code of Conduct Violations",
+ "eleventh": "Our goal is to keep Juxt fun and enjoyable for everyone. In the event that someone violates the Juxt Code of Conduct, we will take appropriate action, up to and including blocking the offending user or console.",
+ "twelfth": "Have You Played That Game?",
+ "thirteenth": "If you're posting in the community for a game you've played, your posts will have an icon indicating that you've played it."
+ },
+ "experience": "Game Experience",
+ "experience_text": {
+ "info": "Please tell us how you would describe your level of experience with games. You can change this setting later.",
+ "beginner": "Beginner",
+ "intermediate": "Intermediate",
+ "expert": "Expert"
+ },
+ "google": "Google Analytics",
+ "google_text": "Juxtaposition uses Google Analytics in order to track how users are using our service. The data collected includes but is not limited to time of visit, pages visited, and time spent on the site. This data is not attached to you in any way, and is not used for advertisements by us or Google.",
+ "ready": "Ready to Start Using Juxt",
+ "ready_text": "First check out some communities and see what people from all over the world are posting about. Take this opportunity to familiarize yourself with Juxt. You might make some new discoveries along the way!",
+ "done": "Have fun in Juxt!",
+ "done_button": "Let's Go!",
+ "guest": "Guest Mode",
+ "guest_text": "We can't verify your account at the moment, which likely means your are currently logging in with a Nintendo Network account. You will still be able to browse juxt, but you will not be able to Yeah! posts or make posts of your own till you log in with a Pretendo Network account. For more information check the Discord server.",
+ "guest_button": "I Understand"
+ }
+}
\ No newline at end of file
diff --git a/src/translations/pt.json b/src/translations/pt.json
new file mode 100644
index 0000000..a36c69f
--- /dev/null
+++ b/src/translations/pt.json
@@ -0,0 +1,126 @@
+{
+ "language": "Portuguese",
+ "global": {
+ "user_page": "User Page",
+ "activity_feed": "Activity Feed",
+ "communities": "Communities",
+ "messages": "Messages",
+ "notifications": "Notifications",
+ "go_back": "Go Back",
+ "back": "Back",
+ "yeahs": "Yeahs",
+ "more": "Load More Posts",
+ "no_posts": "No Posts",
+ "private": "Private",
+ "close": "Close",
+ "save": "Save",
+ "exit": "Exit",
+ "next": "Next"
+ },
+ "all_communities": {
+ "text": "All Communities",
+ "announcements": "Announcements",
+ "ann_string": "Click here to view recent announcements!",
+ "popular_places": "Popular Places",
+ "new_communities": "New Communities",
+ "show_all": "Show All",
+ "search": "Search communities..."
+ },
+ "community": {
+ "follow": "Follow Community",
+ "following": "Following",
+ "followers": "Followers",
+ "posts": "Posts",
+ "tags": "Tags",
+ "recent": "Recent Posts",
+ "popular": "Popular Posts",
+ "verified": "Verified Posts",
+ "new": "New Post"
+ },
+ "user_page": {
+ "country": "Country",
+ "birthday": "Birthday",
+ "game_experience": "Game Experience",
+ "posts": "Posts",
+ "friends": "Friends",
+ "following": "Following",
+ "followers": "Followers",
+ "follow_user": "Follow",
+ "following_user": "Following",
+ "befriend": "Befriend",
+ "pending": "Pending",
+ "unfriend": "Unfriend",
+ "no_friends": "No Friends",
+ "no_following": "Not Following Anyone",
+ "no_followers": "No Followers"
+ },
+ "user_settings": {
+ "profile_settings": "Profile Settings",
+ "show_country": "Show Country on Profile",
+ "show_birthday": "Show Birthday on Profile",
+ "show_game": "Show Game Experience on Profile",
+ "show_comment": "Show Comment on Profile",
+ "profile_comment": "Profile Comment",
+ "swearing": "Profile comment cannot contain explicit language."
+ },
+ "activity_feed": {
+ "empty": "It's empty here. Try following someone!"
+ },
+ "notifications": {
+ "none": "No notifications.",
+ "new_follower": "followed you!"
+ },
+ "new_post": {
+ "new_post_text": "New Post",
+ "post_to": "Post to",
+ "text_hint": "Tap here to make a post.",
+ "swearing": "Post cannot contain explicit language."
+ },
+ "messages": {
+ "coming_soon": "Messages isn't ready yet. Check back soon!"
+ },
+ "setup": {
+ "welcome": "Welcome to Juxtaposition!",
+ "welcome_text": "Juxt is a gaming community that connects people from all over the world using Mii characters. Use Juxt to share your gaming experiences and meet people from around the world.",
+ "beta": "Beta Disclaimer",
+ "beta_text": {
+ "fisrt": "You are about to try out the first public beta of Juxt. This means that a lot is still up in the air, and a lot can change at any time.",
+ "second": "This can and may include a total wipe of the database at the conclusion or during the beta period.",
+ "third": "The website, its software and all content found on it are provided on an “as is” and “as available” basis. The Pretendo Network does not give any warranties, whether express or implied, as to the suitability or usability of the website, its software or any of its content."
+ },
+ "info": "What is Juxtaposition?",
+ "info_text": "Juxt is a user-driven gaming community where you can interact with people\n all over the world. You can write or draw posts in game communities or send messages directly to your friends.",
+ "rules": "Juxt Rules",
+ "rules_text": {
+ "first": "The following are some important guidelines for making Juxt a fun and enjoyable experience for everyone. The Juxt Code of Conduct contains detailed information, so please read it carefully.",
+ "second": "Posts Can Be Viewed Around the World",
+ "third": "Juxt contains many gaming communities where people from all over the world can share their thoughts. When you post in a community, remember that everyone can see it, so please express yourself in a way that everyone can enjoy. Use common sense, and think before you post. Juxt is a service that is also accessible from the Internet, so bear in mind that people who don't use Juxt may also see your posts. Additionally, any comments you make on your friends’ posts will be seen not by just your friends but by people around the world, too. Please keep this in mind.",
+ "fourth": "Be Nice to One Another",
+ "fifth": "In order to keep Juxt a fun place for everyone, we ask that you be considerate to other users. Help us keep Juxt an enjoyable experience by not posting anything inappropriate or offensive.",
+ "sixth": "Do Not Post Personal Information—Yours or Others’",
+ "seventh": "Remember, knowing someone in Juxt isn’t the same as knowing them in real life. Never share your e-mail address, home address, work or school name, or other personally identifying information with anyone on Juxt, and never share anyone else's information either. Additionally, if someone you meet in Juxt invites you to meet him or her in the real world, do not accept. Juxt is an online community and should not be used to arrange real-world meet-ups.",
+ "eighth": "Don’t Post Spoilers",
+ "ninth": "Some people come to Juxt looking for tips and tricks for games, but others want to discover a game's secrets all on their own. Posts that reveal secrets of a game or its story are called \"spoilers.\" If you're posting something about a game that might be a spoiler, be sure to check the Spoilers box before sending your post. This way, people who don't want to be spoiled won't see your post.",
+ "tenth": "Code of Conduct Violations",
+ "eleventh": "Our goal is to keep Juxt fun and enjoyable for everyone. In the event that someone violates the Juxt Code of Conduct, we will take appropriate action, up to and including blocking the offending user or console.",
+ "twelfth": "Have You Played That Game?",
+ "thirteenth": "If you're posting in the community for a game you've played, your posts will have an icon indicating that you've played it."
+ },
+ "experience": "Game Experience",
+ "experience_text": {
+ "info": "Please tell us how you would describe your level of experience with games. You can change this setting later.",
+ "beginner": "Beginner",
+ "intermediate": "Intermediate",
+ "expert": "Expert"
+ },
+ "google": "Google Analytics",
+ "google_text": "Juxtaposition uses Google Analytics in order to track how users are using our service. The data collected includes but is not limited to time of visit, pages visited, and time spent on the site. This data is not attached to you in any way, and is not used for advertisements by us or Google.",
+ "ready": "Ready to Start Using Juxt",
+ "ready_text": "First check out some communities and see what people from all over the world are posting about. Take this opportunity to familiarize yourself with Juxt. You might make some new discoveries along the way!",
+ "done": "Have fun in Juxt!",
+ "done_button": "Let's Go!",
+ "guest": "Guest Mode",
+ "guest_text": "We can't verify your account at the moment, which likely means your are currently logging in with a Nintendo Network account. You will still be able to browse juxt, but you will not be able to Yeah! posts or make posts of your own till you log in with a Pretendo Network account. For more information check the Discord server.",
+ "guest_button": "I Understand"
+ }
+}
\ No newline at end of file
diff --git a/src/translations/ru.json b/src/translations/ru.json
new file mode 100644
index 0000000..9e914aa
--- /dev/null
+++ b/src/translations/ru.json
@@ -0,0 +1,126 @@
+{
+ "language": "Russian",
+ "global": {
+ "user_page": "User Page",
+ "activity_feed": "Activity Feed",
+ "communities": "Communities",
+ "messages": "Messages",
+ "notifications": "Notifications",
+ "go_back": "Go Back",
+ "back": "Back",
+ "yeahs": "Yeahs",
+ "more": "Load More Posts",
+ "no_posts": "No Posts",
+ "private": "Private",
+ "close": "Close",
+ "save": "Save",
+ "exit": "Exit",
+ "next": "Next"
+ },
+ "all_communities": {
+ "text": "All Communities",
+ "announcements": "Announcements",
+ "ann_string": "Click here to view recent announcements!",
+ "popular_places": "Popular Places",
+ "new_communities": "New Communities",
+ "show_all": "Show All",
+ "search": "Search communities..."
+ },
+ "community": {
+ "follow": "Follow Community",
+ "following": "Following",
+ "followers": "Followers",
+ "posts": "Posts",
+ "tags": "Tags",
+ "recent": "Recent Posts",
+ "popular": "Popular Posts",
+ "verified": "Verified Posts",
+ "new": "New Post"
+ },
+ "user_page": {
+ "country": "Country",
+ "birthday": "Birthday",
+ "game_experience": "Game Experience",
+ "posts": "Posts",
+ "friends": "Friends",
+ "following": "Following",
+ "followers": "Followers",
+ "follow_user": "Follow",
+ "following_user": "Following",
+ "befriend": "Befriend",
+ "pending": "Pending",
+ "unfriend": "Unfriend",
+ "no_friends": "No Friends",
+ "no_following": "Not Following Anyone",
+ "no_followers": "No Followers"
+ },
+ "user_settings": {
+ "profile_settings": "Profile Settings",
+ "show_country": "Show Country on Profile",
+ "show_birthday": "Show Birthday on Profile",
+ "show_game": "Show Game Experience on Profile",
+ "show_comment": "Show Comment on Profile",
+ "profile_comment": "Profile Comment",
+ "swearing": "Profile comment cannot contain explicit language."
+ },
+ "activity_feed": {
+ "empty": "It's empty here. Try following someone!"
+ },
+ "notifications": {
+ "none": "No notifications.",
+ "new_follower": "followed you!"
+ },
+ "new_post": {
+ "new_post_text": "New Post",
+ "post_to": "Post to",
+ "text_hint": "Tap here to make a post.",
+ "swearing": "Post cannot contain explicit language."
+ },
+ "messages": {
+ "coming_soon": "Messages isn't ready yet. Check back soon!"
+ },
+ "setup": {
+ "welcome": "Welcome to Juxtaposition!",
+ "welcome_text": "Juxt is a gaming community that connects people from all over the world using Mii characters. Use Juxt to share your gaming experiences and meet people from around the world.",
+ "beta": "Beta Disclaimer",
+ "beta_text": {
+ "fisrt": "You are about to try out the first public beta of Juxt. This means that a lot is still up in the air, and a lot can change at any time.",
+ "second": "This can and may include a total wipe of the database at the conclusion or during the beta period.",
+ "third": "The website, its software and all content found on it are provided on an “as is” and “as available” basis. The Pretendo Network does not give any warranties, whether express or implied, as to the suitability or usability of the website, its software or any of its content."
+ },
+ "info": "What is Juxtaposition?",
+ "info_text": "Juxt is a user-driven gaming community where you can interact with people\n all over the world. You can write or draw posts in game communities or send messages directly to your friends.",
+ "rules": "Juxt Rules",
+ "rules_text": {
+ "first": "The following are some important guidelines for making Juxt a fun and enjoyable experience for everyone. The Juxt Code of Conduct contains detailed information, so please read it carefully.",
+ "second": "Posts Can Be Viewed Around the World",
+ "third": "Juxt contains many gaming communities where people from all over the world can share their thoughts. When you post in a community, remember that everyone can see it, so please express yourself in a way that everyone can enjoy. Use common sense, and think before you post. Juxt is a service that is also accessible from the Internet, so bear in mind that people who don't use Juxt may also see your posts. Additionally, any comments you make on your friends’ posts will be seen not by just your friends but by people around the world, too. Please keep this in mind.",
+ "fourth": "Be Nice to One Another",
+ "fifth": "In order to keep Juxt a fun place for everyone, we ask that you be considerate to other users. Help us keep Juxt an enjoyable experience by not posting anything inappropriate or offensive.",
+ "sixth": "Do Not Post Personal Information—Yours or Others’",
+ "seventh": "Remember, knowing someone in Juxt isn’t the same as knowing them in real life. Never share your e-mail address, home address, work or school name, or other personally identifying information with anyone on Juxt, and never share anyone else's information either. Additionally, if someone you meet in Juxt invites you to meet him or her in the real world, do not accept. Juxt is an online community and should not be used to arrange real-world meet-ups.",
+ "eighth": "Don’t Post Spoilers",
+ "ninth": "Some people come to Juxt looking for tips and tricks for games, but others want to discover a game's secrets all on their own. Posts that reveal secrets of a game or its story are called \"spoilers.\" If you're posting something about a game that might be a spoiler, be sure to check the Spoilers box before sending your post. This way, people who don't want to be spoiled won't see your post.",
+ "tenth": "Code of Conduct Violations",
+ "eleventh": "Our goal is to keep Juxt fun and enjoyable for everyone. In the event that someone violates the Juxt Code of Conduct, we will take appropriate action, up to and including blocking the offending user or console.",
+ "twelfth": "Have You Played That Game?",
+ "thirteenth": "If you're posting in the community for a game you've played, your posts will have an icon indicating that you've played it."
+ },
+ "experience": "Game Experience",
+ "experience_text": {
+ "info": "Please tell us how you would describe your level of experience with games. You can change this setting later.",
+ "beginner": "Beginner",
+ "intermediate": "Intermediate",
+ "expert": "Expert"
+ },
+ "google": "Google Analytics",
+ "google_text": "Juxtaposition uses Google Analytics in order to track how users are using our service. The data collected includes but is not limited to time of visit, pages visited, and time spent on the site. This data is not attached to you in any way, and is not used for advertisements by us or Google.",
+ "ready": "Ready to Start Using Juxt",
+ "ready_text": "First check out some communities and see what people from all over the world are posting about. Take this opportunity to familiarize yourself with Juxt. You might make some new discoveries along the way!",
+ "done": "Have fun in Juxt!",
+ "done_button": "Let's Go!",
+ "guest": "Guest Mode",
+ "guest_text": "We can't verify your account at the moment, which likely means your are currently logging in with a Nintendo Network account. You will still be able to browse juxt, but you will not be able to Yeah! posts or make posts of your own till you log in with a Pretendo Network account. For more information check the Discord server.",
+ "guest_button": "I Understand"
+ }
+}
\ No newline at end of file
diff --git a/src/translations/zh.json b/src/translations/zh.json
new file mode 100644
index 0000000..6731b91
--- /dev/null
+++ b/src/translations/zh.json
@@ -0,0 +1,126 @@
+{
+ "language": "Chinese",
+ "global": {
+ "user_page": "User Page",
+ "activity_feed": "Activity Feed",
+ "communities": "Communities",
+ "messages": "Messages",
+ "notifications": "Notifications",
+ "go_back": "Go Back",
+ "back": "Back",
+ "yeahs": "Yeahs",
+ "more": "Load More Posts",
+ "no_posts": "No Posts",
+ "private": "Private",
+ "close": "Close",
+ "save": "Save",
+ "exit": "Exit",
+ "next": "Next"
+ },
+ "all_communities": {
+ "text": "All Communities",
+ "announcements": "Announcements",
+ "ann_string": "Click here to view recent announcements!",
+ "popular_places": "Popular Places",
+ "new_communities": "New Communities",
+ "show_all": "Show All",
+ "search": "Search communities..."
+ },
+ "community": {
+ "follow": "Follow Community",
+ "following": "Following",
+ "followers": "Followers",
+ "posts": "Posts",
+ "tags": "Tags",
+ "recent": "Recent Posts",
+ "popular": "Popular Posts",
+ "verified": "Verified Posts",
+ "new": "New Post"
+ },
+ "user_page": {
+ "country": "Country",
+ "birthday": "Birthday",
+ "game_experience": "Game Experience",
+ "posts": "Posts",
+ "friends": "Friends",
+ "following": "Following",
+ "followers": "Followers",
+ "follow_user": "Follow",
+ "following_user": "Following",
+ "befriend": "Befriend",
+ "pending": "Pending",
+ "unfriend": "Unfriend",
+ "no_friends": "No Friends",
+ "no_following": "Not Following Anyone",
+ "no_followers": "No Followers"
+ },
+ "user_settings": {
+ "profile_settings": "Profile Settings",
+ "show_country": "Show Country on Profile",
+ "show_birthday": "Show Birthday on Profile",
+ "show_game": "Show Game Experience on Profile",
+ "show_comment": "Show Comment on Profile",
+ "profile_comment": "Profile Comment",
+ "swearing": "Profile comment cannot contain explicit language."
+ },
+ "activity_feed": {
+ "empty": "It's empty here. Try following someone!"
+ },
+ "notifications": {
+ "none": "No notifications.",
+ "new_follower": "followed you!"
+ },
+ "new_post": {
+ "new_post_text": "New Post",
+ "post_to": "Post to",
+ "text_hint": "Tap here to make a post.",
+ "swearing": "Post cannot contain explicit language."
+ },
+ "messages": {
+ "coming_soon": "Messages isn't ready yet. Check back soon!"
+ },
+ "setup": {
+ "welcome": "Welcome to Juxtaposition!",
+ "welcome_text": "Juxt is a gaming community that connects people from all over the world using Mii characters. Use Juxt to share your gaming experiences and meet people from around the world.",
+ "beta": "Beta Disclaimer",
+ "beta_text": {
+ "fisrt": "You are about to try out the first public beta of Juxt. This means that a lot is still up in the air, and a lot can change at any time.",
+ "second": "This can and may include a total wipe of the database at the conclusion or during the beta period.",
+ "third": "The website, its software and all content found on it are provided on an “as is” and “as available” basis. The Pretendo Network does not give any warranties, whether express or implied, as to the suitability or usability of the website, its software or any of its content."
+ },
+ "info": "What is Juxtaposition?",
+ "info_text": "Juxt is a user-driven gaming community where you can interact with people\n all over the world. You can write or draw posts in game communities or send messages directly to your friends.",
+ "rules": "Juxt Rules",
+ "rules_text": {
+ "first": "The following are some important guidelines for making Juxt a fun and enjoyable experience for everyone. The Juxt Code of Conduct contains detailed information, so please read it carefully.",
+ "second": "Posts Can Be Viewed Around the World",
+ "third": "Juxt contains many gaming communities where people from all over the world can share their thoughts. When you post in a community, remember that everyone can see it, so please express yourself in a way that everyone can enjoy. Use common sense, and think before you post. Juxt is a service that is also accessible from the Internet, so bear in mind that people who don't use Juxt may also see your posts. Additionally, any comments you make on your friends’ posts will be seen not by just your friends but by people around the world, too. Please keep this in mind.",
+ "fourth": "Be Nice to One Another",
+ "fifth": "In order to keep Juxt a fun place for everyone, we ask that you be considerate to other users. Help us keep Juxt an enjoyable experience by not posting anything inappropriate or offensive.",
+ "sixth": "Do Not Post Personal Information—Yours or Others’",
+ "seventh": "Remember, knowing someone in Juxt isn’t the same as knowing them in real life. Never share your e-mail address, home address, work or school name, or other personally identifying information with anyone on Juxt, and never share anyone else's information either. Additionally, if someone you meet in Juxt invites you to meet him or her in the real world, do not accept. Juxt is an online community and should not be used to arrange real-world meet-ups.",
+ "eighth": "Don’t Post Spoilers",
+ "ninth": "Some people come to Juxt looking for tips and tricks for games, but others want to discover a game's secrets all on their own. Posts that reveal secrets of a game or its story are called \"spoilers.\" If you're posting something about a game that might be a spoiler, be sure to check the Spoilers box before sending your post. This way, people who don't want to be spoiled won't see your post.",
+ "tenth": "Code of Conduct Violations",
+ "eleventh": "Our goal is to keep Juxt fun and enjoyable for everyone. In the event that someone violates the Juxt Code of Conduct, we will take appropriate action, up to and including blocking the offending user or console.",
+ "twelfth": "Have You Played That Game?",
+ "thirteenth": "If you're posting in the community for a game you've played, your posts will have an icon indicating that you've played it."
+ },
+ "experience": "Game Experience",
+ "experience_text": {
+ "info": "Please tell us how you would describe your level of experience with games. You can change this setting later.",
+ "beginner": "Beginner",
+ "intermediate": "Intermediate",
+ "expert": "Expert"
+ },
+ "google": "Google Analytics",
+ "google_text": "Juxtaposition uses Google Analytics in order to track how users are using our service. The data collected includes but is not limited to time of visit, pages visited, and time spent on the site. This data is not attached to you in any way, and is not used for advertisements by us or Google.",
+ "ready": "Ready to Start Using Juxt",
+ "ready_text": "First check out some communities and see what people from all over the world are posting about. Take this opportunity to familiarize yourself with Juxt. You might make some new discoveries along the way!",
+ "done": "Have fun in Juxt!",
+ "done_button": "Let's Go!",
+ "guest": "Guest Mode",
+ "guest_text": "We can't verify your account at the moment, which likely means your are currently logging in with a Nintendo Network account. You will still be able to browse juxt, but you will not be able to Yeah! posts or make posts of your own till you log in with a Pretendo Network account. For more information check the Discord server.",
+ "guest_button": "I Understand"
+ }
+}
\ No newline at end of file
diff --git a/src/webfiles/portal/all_communities.ejs b/src/webfiles/portal/all_communities.ejs
index 5455599..05fcee8 100644
--- a/src/webfiles/portal/all_communities.ejs
+++ b/src/webfiles/portal/all_communities.ejs
@@ -23,19 +23,19 @@