1
0
mirror of https://github.com/tobspr/shapez.io.git synced 2026-03-02 03:39:21 +00:00

Initial support for translations

This commit is contained in:
tobspr
2020-05-17 12:12:13 +02:00
parent 13c6fc7598
commit a70a937302
44 changed files with 573 additions and 328 deletions

View File

@@ -76,7 +76,7 @@ export const globalConfig = {
debug: {
/* dev:start */
// fastGameEnter: true,
fastGameEnter: true,
noArtificialDelays: true,
// disableSavegameWrite: true,
showEntityBounds: false,
@@ -90,6 +90,7 @@ export const globalConfig = {
allBuildingsUnlocked: true,
upgradesNoCost: true,
disableUnlockDialog: false,
testTranslations: true,
/* dev:end */
},

View File

@@ -11,6 +11,7 @@ import { FormElement } from "./modal_dialog_forms";
import { globalConfig } from "./config";
import { getStringForKeyCode } from "../game/key_action_mapper";
import { createLogger } from "./logging";
import { T } from "../translations";
const kbEnter = 13;
const kbCancel = 27;
@@ -146,8 +147,7 @@ export class Dialog {
button.classList.add("button");
button.classList.add("styledButton");
button.classList.add(buttonStyle);
// button.innerText = T.dialog_buttons[buttonId];
button.innerText = buttonId;
button.innerText = T.dialogs.buttons[buttonId];
const params = (rawParams || "").split("/");
const useTimeout = params.indexOf("timeout") >= 0;
@@ -277,7 +277,7 @@ export class DialogLoading extends Dialog {
const loader = document.createElement("div");
loader.classList.add("prefab_LoadingTextWithAnim");
loader.classList.add("loadingIndicator");
loader.innerText = "Loading";
loader.innerText = T.global.loading;
elem.appendChild(loader);
this.app.inputMgr.pushReciever(this.inputReciever);

View File

@@ -15,6 +15,7 @@ import {
performanceNow,
} from "./builtins";
import { Vector } from "./vector";
import { T } from "../translations";
// Constants
export const TOP = new Vector(0, -1);
@@ -421,7 +422,7 @@ export function formatBigNumber(num, divider = ".") {
num = Math_abs(num);
if (num > 1e54) {
return sign + "inf";
return sign + T.global.infinite;
}
if (num < 10 && !Number.isInteger(num)) {
@@ -459,7 +460,7 @@ export function formatBigNumberFull(num, divider = ",") {
return num + "";
}
if (num > 1e54) {
return "infinite";
return T.global.infinite;
}
let rest = num;
let out = "";
@@ -831,24 +832,47 @@ export function formatSecondsToTimeAgo(secs) {
if (seconds <= 60) {
if (seconds <= 1) {
return "one second ago";
return T.global.time.oneSecondAgo;
}
return seconds + " seconds ago";
return T.global.time.xSecondsAgo.replace("<x>", "" + seconds);
} else if (minutes <= 60) {
if (minutes <= 1) {
return "one minute ago";
return T.global.time.oneMinuteAgo;
}
return minutes + " minutes ago";
return T.global.time.xMinutesAgo.replace("<x>", "" + minutes);
} else if (hours <= 60) {
if (hours <= 1) {
return "one hour ago";
return T.global.time.oneHourAgo;
}
return hours + " hours ago";
return T.global.time.xHoursAgo.replace("<x>", "" + hours);
} else {
if (days <= 1) {
return "one day ago";
return T.global.time.oneDayAgo;
}
return days + " days ago";
return T.global.time.xDaysAgo.replace("<x>", "" + days);
}
}
/**
* Formats seconds into a readable string like "5h 23m"
* @param {number} secs Seconds
* @returns {string}
*/
export function formatSeconds(secs) {
const trans = T.global.time;
secs = Math_ceil(secs);
if (secs < 60) {
return trans.secondsShort.replace("<seconds>", "" + secs);
} else if (secs < 60 * 60) {
const minutes = Math_floor(secs / 60);
const seconds = secs % 60;
return trans.minutesAndSecondsShort
.replace("<seconds>", "" + seconds)
.replace("<minutes>", "" + minutes);
} else {
const hours = Math_floor(secs / 3600);
const minutes = Math_floor(secs / 60) % 60;
return trans.hoursAndMinutesShort.replace("<minutes>", "" + minutes).replace("<hours>", "" + hours);
}
}
@@ -868,3 +892,11 @@ export function generateFileDownload(filename, text) {
element.click();
document.body.removeChild(element);
}
/**
* Capitalizes the first letter
* @param {string} str
*/
export function capitalizeFirstLetter(str) {
return str.substr(0, 1).toUpperCase() + str.substr(1).toLowerCase();
}