forked from MapComplete/MapComplete
Better tag rewriting, add icons, add bicycle rental theme
This commit is contained in:
parent
1dcb3897e4
commit
9594868e83
23 changed files with 389 additions and 117 deletions
|
@ -142,6 +142,33 @@ export class Translation extends BaseUIElement {
|
|||
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* Given a translation such as `{en: "How much of bicycle_types are rented here}` (which is this translation)
|
||||
* and a translation object `{ en: "electrical bikes" }`, plus the translation specification `bicycle_types`, will return
|
||||
* a new translation:
|
||||
* `{en: "How much electrical bikes are rented here?"}`
|
||||
*
|
||||
* @param translationObject
|
||||
* @param stringToReplace
|
||||
* @constructor
|
||||
*/
|
||||
public Fuse(translationObject: Translation, stringToReplace: string): Translation{
|
||||
const translations = this.translations
|
||||
const newTranslations = {}
|
||||
for (const lang in translations) {
|
||||
const target = translationObject.textFor(lang)
|
||||
if(target === undefined){
|
||||
continue
|
||||
}
|
||||
if(typeof target !== "string"){
|
||||
throw "Invalid object in Translation.fuse: translationObject['"+lang+"'] is not a string, it is: "+JSON.stringify(target)
|
||||
}
|
||||
newTranslations[lang] = this.translations[lang].replaceAll(stringToReplace, target)
|
||||
}
|
||||
return new Translation(newTranslations)
|
||||
}
|
||||
|
||||
public replace(a: string, b: string) {
|
||||
if (a.startsWith("{") && a.endsWith("}")) {
|
||||
a = a.substr(1, a.length - 2);
|
||||
|
|
|
@ -2,11 +2,11 @@ import {FixedUiElement} from "../Base/FixedUiElement";
|
|||
import AllTranslationAssets from "../../AllTranslationAssets";
|
||||
import {Translation} from "./Translation";
|
||||
import BaseUIElement from "../BaseUIElement";
|
||||
|
||||
import * as known_languages from "../../assets/generated/used_languages.json"
|
||||
export default class Translations {
|
||||
|
||||
static t = AllTranslationAssets.t;
|
||||
|
||||
private static knownLanguages = new Set(known_languages.languages)
|
||||
constructor() {
|
||||
throw "Translations is static. If you want to intitialize a new translation, use the singular form"
|
||||
}
|
||||
|
@ -89,4 +89,11 @@ export default class Translations {
|
|||
|
||||
}
|
||||
|
||||
static isProbablyATranslation(transl: any) {
|
||||
if(typeof transl !== "object"){
|
||||
return false;
|
||||
}
|
||||
// is a weird key found?
|
||||
return !Object.keys(transl).some(key => !this.knownLanguages.has(key))
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue