mirror of
https://github.com/Spythere/pojazdownik.git
synced 2026-05-03 11:45:34 +00:00
tłumaczenie PL/EN (wip, cz.2)
This commit is contained in:
@@ -1,19 +1,15 @@
|
|||||||
<template>
|
<template>
|
||||||
<footer>
|
<footer>
|
||||||
<i18n-t keypath="footer.disclaimer" tag="div" class="text--grayed">
|
<i18n-t keypath="footer.disclaimer" tag="div" class="text--grayed">
|
||||||
<template #href>
|
<template #tos>
|
||||||
<a
|
<a style="color: #ccc" :href="$t('footer.tos-href')" target="_blank">
|
||||||
style="color: #ccc"
|
|
||||||
href="https://docs.google.com/document/d/1UAAPUtN0d_RoS4RgOzEzllJZJhA0VcizzCzKW4QylbY/edit"
|
|
||||||
target="_blank"
|
|
||||||
>
|
|
||||||
{{ $t('footer.tos') }}
|
{{ $t('footer.tos') }}
|
||||||
</a>
|
</a>
|
||||||
</template>
|
</template>
|
||||||
</i18n-t>
|
</i18n-t>
|
||||||
|
|
||||||
<div class="text--grayed" v-if="store.stockData">
|
<div class="text--grayed" v-if="store.stockData">
|
||||||
Strona jest kompletna dla wersji {{ store.stockData.version }} symulatora TD2
|
{{ $t('footer.version-check', { version: store.stockData.version }) }}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div>
|
<div>
|
||||||
|
|||||||
@@ -1,36 +1,75 @@
|
|||||||
<template>
|
<template>
|
||||||
<section class="logo-section" @click="navigate">
|
<section class="logo-section">
|
||||||
<img src="/images/logo.svg" alt="logo pojazdownik" />
|
<img src="/images/logo.svg" alt="logo pojazdownik" @click="navigate" />
|
||||||
|
|
||||||
|
<div class="actions">
|
||||||
|
<button
|
||||||
|
class="btn btn--text"
|
||||||
|
v-for="action in localeActions"
|
||||||
|
:data-selected="$i18n.locale == action.locale"
|
||||||
|
@click="chooseLocale(action.locale)"
|
||||||
|
>
|
||||||
|
{{ action.name }}
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
</section>
|
</section>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
export default {
|
export default {
|
||||||
setup() {
|
data() {
|
||||||
return {};
|
return {
|
||||||
|
localeActions: [
|
||||||
|
{
|
||||||
|
name: 'POLSKI',
|
||||||
|
locale: 'pl',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: 'ENGLISH',
|
||||||
|
locale: 'en',
|
||||||
|
},
|
||||||
|
],
|
||||||
|
};
|
||||||
},
|
},
|
||||||
|
|
||||||
methods: {
|
methods: {
|
||||||
navigate() {
|
navigate() {
|
||||||
window.location.pathname = '';
|
window.location.pathname = '';
|
||||||
},
|
},
|
||||||
|
|
||||||
|
chooseLocale(locale: string) {
|
||||||
|
this.$i18n.locale = locale;
|
||||||
|
},
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style lang="scss" scoped>
|
<style lang="scss" scoped>
|
||||||
|
@import '../../styles/global.scss';
|
||||||
|
|
||||||
.logo-section {
|
.logo-section {
|
||||||
grid-row: 1;
|
grid-row: 1;
|
||||||
grid-column: 1;
|
grid-column: 1;
|
||||||
margin-bottom: 1.5em;
|
margin-bottom: 1.5em;
|
||||||
|
|
||||||
display: flex;
|
display: flex;
|
||||||
justify-content: center;
|
|
||||||
align-items: center;
|
align-items: center;
|
||||||
|
flex-direction: column;
|
||||||
|
gap: 0.5em;
|
||||||
|
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.actions {
|
||||||
|
display: flex;
|
||||||
|
gap: 0.5em;
|
||||||
|
|
||||||
|
button[data-selected='true'] {
|
||||||
|
font-weight: bold;
|
||||||
|
color: $accentColor;
|
||||||
|
text-decoration: underline;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
img {
|
img {
|
||||||
max-width: 25em;
|
max-width: 25em;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
|
|||||||
@@ -1,14 +1,14 @@
|
|||||||
<template>
|
<template>
|
||||||
<section class="train-image-section">
|
<section class="train-image-section">
|
||||||
<div class="train-image__wrapper">
|
<div class="train-image__wrapper">
|
||||||
<div class="train-image__content" :class="{'supporter': store.chosenVehicle?.supportersOnly}">
|
<div class="train-image__content" :class="{ supporter: store.chosenVehicle?.supportersOnly }">
|
||||||
<transition name="img-message-anim">
|
<transition name="img-message-anim">
|
||||||
<div class="empty-message" v-if="store.imageLoading && store.chosenVehicle?.imageSrc">
|
<div class="empty-message" v-if="store.imageLoading && store.chosenVehicle?.imageSrc">
|
||||||
ŁADOWANIE OBRAZU...
|
{{ $t('preview.loading') }}
|
||||||
</div>
|
</div>
|
||||||
</transition>
|
</transition>
|
||||||
|
|
||||||
<div class="no-img" v-if="!store.chosenVehicle">PODGLĄD WYBRANEGO POJAZDU</div>
|
<div class="no-img" v-if="!store.chosenVehicle">{{ $t('preview.title') }}</div>
|
||||||
|
|
||||||
<img
|
<img
|
||||||
v-if="store.chosenVehicle"
|
v-if="store.chosenVehicle"
|
||||||
@@ -23,11 +23,11 @@
|
|||||||
|
|
||||||
<div class="train-image__info" v-if="store.chosenVehicle">
|
<div class="train-image__info" v-if="store.chosenVehicle">
|
||||||
<b class="text--accent">{{ store.chosenVehicle.type }}</b> •
|
<b class="text--accent">{{ store.chosenVehicle.type }}</b> •
|
||||||
<b style="color: #ccc">{{
|
<b style="color: #ccc">
|
||||||
vehicleTypes[
|
{{
|
||||||
isLocomotive(store.chosenVehicle) ? store.chosenVehicle.power : store.chosenVehicle.useType || 'loco-e'
|
$t(`preview.${isLocomotive(store.chosenVehicle) ? store.chosenVehicle.power : store.chosenVehicle.useType}`)
|
||||||
]
|
}}
|
||||||
}}</b>
|
</b>
|
||||||
|
|
||||||
<div style="color: #ccc">
|
<div style="color: #ccc">
|
||||||
<div>
|
<div>
|
||||||
@@ -35,21 +35,23 @@
|
|||||||
{{ store.chosenVehicle.maxSpeed }} km/h
|
{{ store.chosenVehicle.maxSpeed }} km/h
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div v-if="isLocomotive(store.chosenVehicle)">Typ kabiny: {{ store.chosenVehicle.cabinType }}</div>
|
<div v-if="isLocomotive(store.chosenVehicle)">
|
||||||
|
{{ $t('preview.cabin') }} {{ store.chosenVehicle.cabinType }}
|
||||||
|
</div>
|
||||||
|
|
||||||
<div v-else>
|
<div v-else>
|
||||||
{{
|
{{
|
||||||
store.chosenVehicle.useType == 'car-cargo'
|
store.chosenVehicle.useType == 'car-cargo' // ? store.stockData?.usage[store.chosenVehicle.constructionType]
|
||||||
? store.stockData?.usage[store.chosenVehicle.constructionType]
|
? $t(`usage.${store.chosenVehicle.constructionType}`)
|
||||||
: 'Typ konstrukcji: ' + store.chosenVehicle.constructionType
|
: `${$t('preview.construction')} ${store.chosenVehicle.constructionType}`
|
||||||
}}
|
}}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<b style="color: salmon;" v-if="store.chosenVehicle.supportersOnly">* TYLKO DLA SPONSORÓW</b>
|
<b style="color: salmon" v-if="store.chosenVehicle.supportersOnly">{{ $t('preview.sponsor-only') }}</b>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="train-image__info" v-else>Wybierz pojazd lub wagon, aby zobaczyć jego podgląd powyżej</div>
|
<div class="train-image__info" v-else>{{ $t('preview.desc') }}</div>
|
||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
</template>
|
</template>
|
||||||
@@ -70,19 +72,6 @@ export default defineComponent({
|
|||||||
};
|
};
|
||||||
},
|
},
|
||||||
|
|
||||||
data() {
|
|
||||||
return {
|
|
||||||
vehicleTypes: {
|
|
||||||
'loco-e': 'ELEKTROWÓZ',
|
|
||||||
'loco-s': 'SPALINOWÓZ',
|
|
||||||
'loco-ezt': 'EZT',
|
|
||||||
'loco-szt': 'SZT',
|
|
||||||
'car-passenger': 'WAGON PASAŻERSKI',
|
|
||||||
'car-cargo': 'WAGON TOWAROWY',
|
|
||||||
} as { [key: string]: string },
|
|
||||||
};
|
|
||||||
},
|
|
||||||
|
|
||||||
watch: {
|
watch: {
|
||||||
chosenVehicle(vehicle: Vehicle, prevVehicle: Vehicle) {
|
chosenVehicle(vehicle: Vehicle, prevVehicle: Vehicle) {
|
||||||
if (vehicle && vehicle.type != prevVehicle?.type) {
|
if (vehicle && vehicle.type != prevVehicle?.type) {
|
||||||
|
|||||||
@@ -1,45 +1,45 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="number-generator tab">
|
<div class="number-generator tab">
|
||||||
<div class="tab_header">
|
<div class="tab_header">
|
||||||
<h2>GENERATOR NUMERU POCIĄGU</h2>
|
<h2>{{ $t('numgen.title') }}</h2>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="tab_content">
|
<div class="tab_content">
|
||||||
<div class="options">
|
<div class="options">
|
||||||
<select v-model="beginRegionName" @change="randomizeTrainNumber()">
|
<select v-model="beginRegionName" @change="randomizeTrainNumber()">
|
||||||
<option :value="null" disabled>Początkowy obszar konstrukcyjny</option>
|
<option :value="null" disabled>{{ $t('numgen.start-region') }}</option>
|
||||||
<option v-for="(_, name) in genData.regionNumbers" :value="name">{{ name }}</option>
|
<option v-for="(_, name) in genData.regionNumbers" :value="name">{{ name }}</option>
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
<select v-model="endRegionName" @change="randomizeTrainNumber()">
|
<select v-model="endRegionName" @change="randomizeTrainNumber()">
|
||||||
<option :value="null" disabled>Końcowy obszar konstrukcyjny</option>
|
<option :value="null" disabled>{{ $t('numgen.end-region') }}</option>
|
||||||
<option v-for="(_, name) in genData.regionNumbers" :value="name">{{ name }}</option>
|
<option v-for="(_, name) in genData.regionNumbers" :value="name">{{ name }}</option>
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
<select v-model="categoryRules" @change="randomizeTrainNumber()">
|
<select v-model="categoryRules" @change="randomizeTrainNumber()">
|
||||||
<option :value="null" disabled>Kategoria pociągu</option>
|
<option :value="null" disabled>{{ $t('numgen.train-category') }}</option>
|
||||||
<option v-for="(rules, category) in genData.categories" :value="rules">{{ category }}</option>
|
<option v-for="(rules, category) in genData.categories" :value="rules">{{ $t(`numgen.categories.${category}`) }}</option>
|
||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="generated-number" @click="copyNumber">
|
<div class="generated-number" @click="copyNumber">
|
||||||
<span v-if="trainNumber">
|
<span v-if="trainNumber">
|
||||||
Wygenerowany numer pociągu: <b class="text--accent">{{ trainNumber }}</b>
|
{{ $t('numgen.number-info') }} <b class="text--accent">{{ trainNumber }}</b>
|
||||||
</span>
|
</span>
|
||||||
<span v-else>Wybierz kategorię oraz obszary konstrukcyjne (opcjonalnie)</span>
|
<span v-else>{{ $t('numgen.warning') }}</span>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="tab_links">
|
<div class="tab_links">
|
||||||
<a href="https://wiki.td2.info.pl/index.php?title=Zasady_numeracji_poci%C4%85g%C3%B3w" target="_blank">
|
<a :href="$t('numgen.td2-wiki-link')" target="_blank">
|
||||||
> Szczegółowe zasady numeracji (wikipedia TD2)
|
{{ $t('numgen.td2-wiki') }}
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<hr />
|
<hr />
|
||||||
|
|
||||||
<div class="tab_actions">
|
<div class="tab_actions">
|
||||||
<button class="btn" @click="randomizeTrainNumber(true)">LOSUJ OBSZARY</button>
|
<button class="btn" @click="randomizeTrainNumber(true)">{{ $t('numgen.action-random-region') }}</button>
|
||||||
<button class="btn" @click="randomizeTrainNumber(false)">LOSUJ NUMER</button>
|
<button class="btn" @click="randomizeTrainNumber(false)">{{ $t('numgen.action-random-number') }}</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -1,62 +1,61 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="stock-generator tab">
|
<div class="stock-generator tab">
|
||||||
<div class="tab_header">
|
<div class="tab_header">
|
||||||
<h2>GENERATOR SKŁADU TOWAROWEGO</h2>
|
<h2>{{ $t('stockgen.title') }}</h2>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="tab_content">
|
<div class="tab_content">
|
||||||
<div>
|
<div>
|
||||||
<h2>WŁAŚCIWOŚCI SKŁADU</h2>
|
<h2>{{ $t('stockgen.properties-title') }}</h2>
|
||||||
|
|
||||||
<b class="text--accent">
|
<b class="text--accent">
|
||||||
⇐ Dodaj lokomotywę na pierwsze miejsce listy, aby uwzględnić ją przy losowaniu składu!
|
{{ $t('stockgen.properties-desc') }}
|
||||||
</b>
|
</b>
|
||||||
|
|
||||||
<div class="tab_attributes">
|
<div class="tab_attributes">
|
||||||
<label>
|
<label>
|
||||||
Maksymalna masa (t)
|
{{ $t('stockgen.input-mass') }}
|
||||||
<input type="number" v-model="maxMass" step="100" max="4000" min="0" />
|
<input type="number" v-model="maxMass" step="100" max="4000" min="0" />
|
||||||
</label>
|
</label>
|
||||||
|
|
||||||
<label>
|
<label>
|
||||||
Maks. długość (m)
|
{{ $t('stockgen.input-length') }}
|
||||||
<input type="number" v-model="maxLength" step="25" max="650" min="0" />
|
<input type="number" v-model="maxLength" step="25" max="650" min="0" />
|
||||||
</label>
|
</label>
|
||||||
|
|
||||||
<label>
|
<label>
|
||||||
Maks. liczba wagonów
|
{{ $t('stockgen.input-carcount') }}
|
||||||
<input type="number" v-model="maxCarCount" step="1" max="60" min="1" />
|
<input type="number" v-model="maxCarCount" step="1" max="60" min="1" />
|
||||||
</label>
|
</label>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div>
|
<div>
|
||||||
<h2>ŁADUNEK</h2>
|
<h2>{{ $t('stockgen.cargo-title') }}</h2>
|
||||||
<b>Wybierz ładunki, którymi chcesz wypełnić dostępne wagony:</b>
|
<b>{{ $t('stockgen.cargo-desc') }}</b>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="generator_cargo">
|
<div class="generator_cargo">
|
||||||
<button
|
<button
|
||||||
class="btn"
|
class="btn"
|
||||||
:data-chosen="chosenCargoTypes.includes(k.toString())"
|
:data-chosen="chosenCargoTypes.includes(cargoName.toString())"
|
||||||
v-for="(v, k) in store.stockData?.generator.cargo"
|
v-for="(cargoArray, cargoName) in store.stockData?.generator.cargo"
|
||||||
@click="toggleCargoChosen(k.toString(), v)"
|
@click="toggleCargoChosen(cargoName.toString(), cargoArray)"
|
||||||
>
|
>
|
||||||
{{ k }}
|
{{ $t(`cargo.${cargoName}`) }}
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div>
|
<div>
|
||||||
<h2>WAGONY Z WYBRANYMI ŁADUNKAMI</h2>
|
<h2>{{ $t('stockgen.chosen-title') }}</h2>
|
||||||
|
|
||||||
<div class="generator_warning">
|
<div class="generator_warning">
|
||||||
<span v-if="computedChosenCarTypes.size == 0">
|
<span v-if="computedChosenCarTypes.size == 0">
|
||||||
Wybierz co najmniej jeden ładunek, aby zobaczyć wagony, które go posiadają!
|
{{ $t('stockgen.chosen-empty-warning') }}
|
||||||
</span>
|
</span>
|
||||||
|
|
||||||
<span v-else>
|
<span v-else>
|
||||||
Wagony posiadające wybrane ładunki. Najedź na nazwę, aby zobaczyć podgląd wagonu. Kliknij, aby wyłączyć z
|
{{ $t('stockgen.chosen-warning') }}
|
||||||
losowania (tylko podświetlone nazwy będą uwzględnione).
|
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -80,14 +79,15 @@
|
|||||||
|
|
||||||
<div class="tab_actions">
|
<div class="tab_actions">
|
||||||
<button class="btn" :data-disabled="computedChosenCarTypes.size == 0" @click="generateStock()">
|
<button class="btn" :data-disabled="computedChosenCarTypes.size == 0" @click="generateStock()">
|
||||||
WYGENERUJ
|
{{ $t('stockgen.action-generate') }}
|
||||||
</button>
|
</button>
|
||||||
|
|
||||||
<button class="btn" :data-disabled="computedChosenCarTypes.size == 0" @click="generateStock(true)">
|
<button class="btn" :data-disabled="computedChosenCarTypes.size == 0" @click="generateStock(true)">
|
||||||
WYGENERUJ PRÓŻNE WAGONY
|
{{ $t('stockgen.action-generate-empty') }}
|
||||||
</button>
|
</button>
|
||||||
|
|
||||||
<button class="btn" :data-disabled="computedChosenCarTypes.size == 0" @click="resetChosenCargo">
|
<button class="btn" :data-disabled="computedChosenCarTypes.size == 0" @click="resetChosenCargo">
|
||||||
ZRESETUJ ŁADUNKI
|
{{ $t('stockgen.action-reset') }}
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -1,8 +1,12 @@
|
|||||||
<template>
|
<template>
|
||||||
<section class="stock-list-tab">
|
<section class="stock-list-tab">
|
||||||
<div class="stock_controls" :data-disabled="store.chosenStockListIndex == -1">
|
<div class="stock_controls" :data-disabled="store.chosenStockListIndex == -1">
|
||||||
<b class="no">
|
<b v-if="store.chosenStockListIndex >= 0">
|
||||||
POJAZD NR <span class="text--accent">{{ store.chosenStockListIndex + 1 }}</span>
|
{{ $t('stocklist.vehicle-no') }} <span class="text--accent">{{ store.chosenStockListIndex + 1 }}</span>
|
||||||
|
</b>
|
||||||
|
|
||||||
|
<b v-else>
|
||||||
|
{{ $t('stocklist.no-vehicle-chosen') }}
|
||||||
</b>
|
</b>
|
||||||
|
|
||||||
<button
|
<button
|
||||||
@@ -11,7 +15,7 @@
|
|||||||
@click="moveUpStock(store.chosenStockListIndex)"
|
@click="moveUpStock(store.chosenStockListIndex)"
|
||||||
>
|
>
|
||||||
<img :src="getIconURL('higher')" alt="move up vehicle" />
|
<img :src="getIconURL('higher')" alt="move up vehicle" />
|
||||||
PRZENIEŚ WYŻEJ
|
{{ $t('stocklist.action-move-up') }}
|
||||||
</button>
|
</button>
|
||||||
|
|
||||||
<button
|
<button
|
||||||
@@ -20,7 +24,7 @@
|
|||||||
@click="moveDownStock(store.chosenStockListIndex)"
|
@click="moveDownStock(store.chosenStockListIndex)"
|
||||||
>
|
>
|
||||||
<img :src="getIconURL('lower')" alt="move down vehicle" />
|
<img :src="getIconURL('lower')" alt="move down vehicle" />
|
||||||
PRZENIEŚ NIŻEJ
|
{{ $t('stocklist.action-move-down') }}
|
||||||
</button>
|
</button>
|
||||||
|
|
||||||
<button
|
<button
|
||||||
@@ -29,7 +33,7 @@
|
|||||||
@click="removeStock(store.chosenStockListIndex)"
|
@click="removeStock(store.chosenStockListIndex)"
|
||||||
>
|
>
|
||||||
<img :src="getIconURL('remove')" alt="remove vehicle" />
|
<img :src="getIconURL('remove')" alt="remove vehicle" />
|
||||||
USUŃ
|
{{ $t('stocklist.action-remove') }}
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@@ -37,7 +41,7 @@
|
|||||||
<label class="file-label">
|
<label class="file-label">
|
||||||
<div class="btn btn--image">
|
<div class="btn btn--image">
|
||||||
<img src="/images/icon-upload.svg" alt="" />
|
<img src="/images/icon-upload.svg" alt="" />
|
||||||
WCZYTAJ
|
{{ $t('stocklist.action-upload') }}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<input type="file" @change="uploadStock" ref="conFile" accept=".con,.txt" />
|
<input type="file" @change="uploadStock" ref="conFile" accept=".con,.txt" />
|
||||||
@@ -45,22 +49,22 @@
|
|||||||
|
|
||||||
<button class="btn btn--image" :data-disabled="stockIsEmpty" :disabled="stockIsEmpty" @click="downloadStock">
|
<button class="btn btn--image" :data-disabled="stockIsEmpty" :disabled="stockIsEmpty" @click="downloadStock">
|
||||||
<img src="/images/icon-download.svg" alt="download icon" />
|
<img src="/images/icon-download.svg" alt="download icon" />
|
||||||
POBIERZ
|
{{ $t('stocklist.action-download') }}
|
||||||
</button>
|
</button>
|
||||||
|
|
||||||
<button class="btn btn--image" :data-disabled="stockIsEmpty" :disabled="stockIsEmpty" @click="copyToClipboard">
|
<button class="btn btn--image" :data-disabled="stockIsEmpty" :disabled="stockIsEmpty" @click="copyToClipboard">
|
||||||
<img src="/images/icon-copy.svg" alt="copy icon" />
|
<img src="/images/icon-copy.svg" alt="copy icon" />
|
||||||
SKOPIUJ
|
{{ $t('stocklist.action-copy') }}
|
||||||
</button>
|
</button>
|
||||||
|
|
||||||
<button class="btn btn--image" :data-disabled="stockIsEmpty" :disabled="stockIsEmpty" @click="resetStock">
|
<button class="btn btn--image" :data-disabled="stockIsEmpty" :disabled="stockIsEmpty" @click="resetStock">
|
||||||
<img src="/images/icon-reset.svg" alt="reset icon" />
|
<img src="/images/icon-reset.svg" alt="reset icon" />
|
||||||
ZRESETUJ
|
{{ $t('stocklist.action-reset') }}
|
||||||
</button>
|
</button>
|
||||||
|
|
||||||
<button class="btn btn--image" :data-disabled="stockIsEmpty" :disabled="stockIsEmpty" @click="shuffleCars">
|
<button class="btn btn--image" :data-disabled="stockIsEmpty" :disabled="stockIsEmpty" @click="shuffleCars">
|
||||||
<img src="/images/icon-shuffle.svg" alt="shuffle icon" />
|
<img src="/images/icon-shuffle.svg" alt="shuffle icon" />
|
||||||
PRZETASUJ
|
{{ $t('stocklist.action-shuffle') }}
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@@ -74,11 +78,12 @@
|
|||||||
</b>
|
</b>
|
||||||
|
|
||||||
<span>
|
<span>
|
||||||
Masa: <span class="text--accent">{{ store.totalMass }}t</span> (dopuszczalna:
|
{{ $t('stocklist.mass') }} <span class="text--accent">{{ store.totalMass }}t</span> ({{
|
||||||
<span class="text--accent">{{ store.acceptableMass ? store.acceptableMass + 't' : '-' }}</span
|
$t('stocklist.mass-accepted')
|
||||||
>) - Długość:
|
}}: <span class="text--accent">{{ store.acceptableMass ? store.acceptableMass + 't' : '-' }}</span
|
||||||
|
>) - {{ $t('stocklist.length') }}:
|
||||||
<span class="text--accent">{{ store.totalLength }}m</span>
|
<span class="text--accent">{{ store.totalLength }}m</span>
|
||||||
- vMax: <span class="text--accent">{{ store.maxStockSpeed }} km/h</span>
|
- {{ $t('stocklist.vmax') }}: <span class="text--accent">{{ store.maxStockSpeed }} km/h</span>
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@@ -89,34 +94,38 @@
|
|||||||
v-model="store.isColdStart"
|
v-model="store.isColdStart"
|
||||||
:disabled="!locoSupportsColdStart(store.stockList[0]?.constructionType || '')"
|
:disabled="!locoSupportsColdStart(store.stockList[0]?.constructionType || '')"
|
||||||
/>
|
/>
|
||||||
Zimny start lokomotywy czołowej (tylko elektrowozy typów 303E i 203E)
|
{{ $t('stocklist.coldstart-info') }}
|
||||||
</label>
|
</label>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="stock_warnings" v-if="stockHasWarnings">
|
<div class="stock_warnings" v-if="stockHasWarnings">
|
||||||
<div class="warning" v-if="locoNotSuitable">
|
<div class="warning" v-if="locoNotSuitable">(!) {{ $t('stocklist.warning-not-suitable') }}</div>
|
||||||
Lokomotywy EP07 i EP08 są przeznaczone jedynie do ruchu pasażerskiego!
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="warning" v-if="trainTooLong && store.isTrainPassenger">
|
<div class="warning" v-if="trainTooLong && store.isTrainPassenger">
|
||||||
Maksymalna długość składów pasażerskich nie może przekraczać 350m!
|
(!) {{ $t('stocklist.warning-passenger-too-long') }}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="warning" v-if="trainTooLong && !store.isTrainPassenger">
|
<div class="warning" v-if="trainTooLong && !store.isTrainPassenger">
|
||||||
Maksymalna długość składów innych niż pasażerskie nie może przekraczać 650m!
|
(!) {{ $t('stocklist.warning-freight-too-long') }}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="warning" v-if="trainTooHeavy">
|
<div class="warning" v-if="trainTooHeavy">
|
||||||
Ten skład jest za ciężki! Sprawdź
|
(!)
|
||||||
<a
|
<i18n-t keypath="stocklist.warning-too-heavy">
|
||||||
target="_blank"
|
<template #href>
|
||||||
href="https://docs.google.com/spreadsheets/d/1bFXUsHsAu4youmNz-46Q1HslZaaoklvfoBDS553TnNk/edit"
|
<a
|
||||||
>
|
target="_blank"
|
||||||
dopuszczalne masy składów
|
href="https://docs.google.com/spreadsheets/d/1bFXUsHsAu4youmNz-46Q1HslZaaoklvfoBDS553TnNk/edit"
|
||||||
</a>
|
>
|
||||||
|
{{ $t('stocklist.acceptable-mass-docs') }}
|
||||||
|
</a>
|
||||||
|
</template>
|
||||||
|
</i18n-t>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="warning" v-if="tooManyLocomotives">Ten skład posiada za dużo pojazdów trakcyjnych!</div>
|
<div class="warning" v-if="tooManyLocomotives">
|
||||||
|
{{ $t('stocklist.warning-too-many-locos') }}
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<StockThumbnails :onListItemClick="onListItemClick" />
|
<StockThumbnails :onListItemClick="onListItemClick" />
|
||||||
@@ -124,7 +133,7 @@
|
|||||||
<!-- Stock list -->
|
<!-- Stock list -->
|
||||||
<ul ref="stock_list">
|
<ul ref="stock_list">
|
||||||
<li v-if="stockIsEmpty" class="list-empty">
|
<li v-if="stockIsEmpty" class="list-empty">
|
||||||
<div class="stock-info">Lista pojazdów jest pusta!</div>
|
<div class="stock-info">{{ $t('stocklist.list-empty') }}</div>
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
<TransitionGroup name="stock-list-anim">
|
<TransitionGroup name="stock-list-anim">
|
||||||
|
|||||||
@@ -1,18 +1,22 @@
|
|||||||
<template>
|
<template>
|
||||||
<section class="wiki-list tab">
|
<section class="wiki-list tab">
|
||||||
<div class="tab_header">
|
<div class="tab_header">
|
||||||
<h2>LISTA DOSTĘPNYCH POJAZDÓW</h2>
|
<h2>{{ $t('wiki.title') }}</h2>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="tab_content">
|
<div class="tab_content">
|
||||||
<div class="actions-panel">
|
<div class="actions-panel">
|
||||||
<div class="actions-panel_vehicles">
|
<div class="actions-panel_vehicles">
|
||||||
<button class="btn btn--choice" @click="changeWikiMode('locomotives')">POJ. TRAKCYJNE</button>
|
<button class="btn btn--choice" @click="changeWikiMode('locomotives')">
|
||||||
<button class="btn btn--choice" @click="changeWikiMode('carWagons')">WAGONY</button>
|
{{ $t('wiki.action-vehicles') }}
|
||||||
|
</button>
|
||||||
|
<button class="btn btn--choice" @click="changeWikiMode('carWagons')">
|
||||||
|
{{ $t('wiki.action-carriages') }}
|
||||||
|
</button>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="actions-panel_search">
|
<div class="actions-panel_search">
|
||||||
<input type="text" placeholder="Wyszukaj pojazd..." v-model="searchedVehicleTypeName" />
|
<input type="text" :placeholder="$t('wiki.search')" v-model="searchedVehicleTypeName" />
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@@ -21,7 +25,7 @@
|
|||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
<th v-for="header in wikiMode == 'locomotives' ? locoHeaders : carHeaders" @click="toggleSorter(header)">
|
<th v-for="header in wikiMode == 'locomotives' ? locoHeaders : carHeaders" @click="toggleSorter(header)">
|
||||||
{{ header.name }}
|
{{ $t(`wiki.header.${header.id}`) }}
|
||||||
|
|
||||||
<span v-if="currentModeSorter.id == header.id">
|
<span v-if="currentModeSorter.id == header.id">
|
||||||
{{ currentModeSorter.direction == 1 ? `⇑` : `⇓` }}
|
{{ currentModeSorter.direction == 1 ? `⇑` : `⇓` }}
|
||||||
@@ -47,7 +51,7 @@
|
|||||||
</td>
|
</td>
|
||||||
|
|
||||||
<td>{{ loco.type }}</td>
|
<td>{{ loco.type }}</td>
|
||||||
<td>{{ vehicleTypes[loco.power] }}</td>
|
<td>{{ $t(`wiki.${loco.power}`) }}</td>
|
||||||
<td>{{ loco.constructionType }}</td>
|
<td>{{ loco.constructionType }}</td>
|
||||||
<td>{{ locoSupportsColdStart(loco.constructionType) ? `✓` : '✗' }}</td>
|
<td>{{ locoSupportsColdStart(loco.constructionType) ? `✓` : '✗' }}</td>
|
||||||
<td>{{ loco.length }}m</td>
|
<td>{{ loco.length }}m</td>
|
||||||
@@ -108,39 +112,31 @@ type SorterID =
|
|||||||
| 'coldStart';
|
| 'coldStart';
|
||||||
|
|
||||||
interface WikiHeader {
|
interface WikiHeader {
|
||||||
name: string;
|
|
||||||
id: SorterID;
|
id: SorterID;
|
||||||
sortable: boolean;
|
sortable: boolean;
|
||||||
}
|
}
|
||||||
|
|
||||||
const locoHeaders: WikiHeader[] = [
|
const locoHeaders: WikiHeader[] = [
|
||||||
{ name: 'Zdjęcie', id: 'image', sortable: false },
|
{ id: 'image', sortable: false },
|
||||||
{ name: 'Nazwa', id: 'type', sortable: true },
|
{ id: 'type', sortable: true },
|
||||||
{ name: 'Rodzaj', id: 'power', sortable: true },
|
{ id: 'power', sortable: true },
|
||||||
{ name: 'Konstrukcja', id: 'constructionType', sortable: true },
|
{ id: 'constructionType', sortable: true },
|
||||||
{ name: 'Zimny start', id: 'coldStart', sortable: true },
|
{ id: 'coldStart', sortable: true },
|
||||||
{ name: 'Długość', id: 'length', sortable: true },
|
{ id: 'length', sortable: true },
|
||||||
{ name: 'Masa', id: 'mass', sortable: true },
|
{ id: 'mass', sortable: true },
|
||||||
{ name: 'Prędkość', id: 'maxSpeed', sortable: true },
|
{ id: 'maxSpeed', sortable: true },
|
||||||
];
|
];
|
||||||
|
|
||||||
const carHeaders: WikiHeader[] = [
|
const carHeaders: WikiHeader[] = [
|
||||||
{ name: 'Zdjęcie', id: 'image', sortable: false },
|
{ id: 'image', sortable: false },
|
||||||
{ name: 'Nazwa', id: 'type', sortable: true },
|
{ id: 'type', sortable: true },
|
||||||
{ name: 'Konstrukcja', id: 'constructionType', sortable: true },
|
{ id: 'constructionType', sortable: true },
|
||||||
{ name: 'Długość', id: 'length', sortable: true },
|
{ id: 'length', sortable: true },
|
||||||
{ name: 'Masa', id: 'mass', sortable: true },
|
{ id: 'mass', sortable: true },
|
||||||
{ name: 'Prędkość', id: 'maxSpeed', sortable: true },
|
{ id: 'maxSpeed', sortable: true },
|
||||||
{ name: 'Ładunki', id: 'cargoCount', sortable: true },
|
{ id: 'cargoCount', sortable: true },
|
||||||
];
|
];
|
||||||
|
|
||||||
const vehicleTypes: { [key: string]: string } = {
|
|
||||||
'loco-ezt': 'EZT',
|
|
||||||
'loco-szt': 'SZT',
|
|
||||||
'loco-s': 'Spalinowóz',
|
|
||||||
'loco-e': 'Elektrowóz',
|
|
||||||
};
|
|
||||||
|
|
||||||
export default defineComponent({
|
export default defineComponent({
|
||||||
mixins: [stockPreviewMixin, stockMixin],
|
mixins: [stockPreviewMixin, stockMixin],
|
||||||
|
|
||||||
@@ -149,7 +145,6 @@ export default defineComponent({
|
|||||||
store: useStore(),
|
store: useStore(),
|
||||||
locoHeaders,
|
locoHeaders,
|
||||||
carHeaders,
|
carHeaders,
|
||||||
vehicleTypes,
|
|
||||||
|
|
||||||
locosScrollTop: 0,
|
locosScrollTop: 0,
|
||||||
carsScrollTop: 0,
|
carsScrollTop: 0,
|
||||||
@@ -348,7 +343,7 @@ export default defineComponent({
|
|||||||
align-items: stretch;
|
align-items: stretch;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
}
|
}
|
||||||
|
|
||||||
.actions-panel_vehicles {
|
.actions-panel_vehicles {
|
||||||
display: grid;
|
display: grid;
|
||||||
grid-template-columns: 1fr 1fr;
|
grid-template-columns: 1fr 1fr;
|
||||||
|
|||||||
@@ -26,13 +26,13 @@
|
|||||||
"Rezerwa": [89, 92, 98]
|
"Rezerwa": [89, 92, 98]
|
||||||
},
|
},
|
||||||
"categories": {
|
"categories": {
|
||||||
"ekspres krajowy (EI)": "2:00-99:2",
|
"EI": "2:00-99:2",
|
||||||
"(między)wojewódzki pośpieszny (MP/RP)": "2:050-169:3",
|
"MP/RP": "2:050-169:3",
|
||||||
"wojewódzki osobowy (RO)": "2:200-999:3",
|
"RO": "2:200-999:3",
|
||||||
"próżny \"służbowy\" (PW)": "2:6;3:0-899:3",
|
"PW": "2:6;3:0-899:3",
|
||||||
"towarowy do przewozów masowych (TM)": "2:4;3:0-899:3",
|
"TM": "2:4;3:0-899:3",
|
||||||
"towarowy do obsługi stacji (TK)": "2:3;3:0-899:3",
|
"TK": "2:3;3:0-899:3",
|
||||||
"lokomotywa luzem (LT)": "2:5;3:0-899:3"
|
"LT": "2:5;3:0-899:3"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
import localePL from './locales/pl.json';
|
import localePL from './locales/pl.json';
|
||||||
import localeEN from './locales/en.json';
|
import localeEN from './locales/en.json';
|
||||||
|
import { I18n } from 'vue-i18n';
|
||||||
|
|
||||||
export type LocaleMessageSchema = typeof localePL;
|
export type LocaleMessageSchema = typeof localePL;
|
||||||
type LocaleKey = 'en' | 'pl';
|
type LocaleKey = 'en' | 'pl';
|
||||||
@@ -8,3 +9,10 @@ export const locales: { [key in LocaleKey]: LocaleMessageSchema } = {
|
|||||||
en: localeEN,
|
en: localeEN,
|
||||||
pl: localePL,
|
pl: localePL,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
export async function fetchBackendTranslations(i18n: I18n) {
|
||||||
|
const localeData = await (await fetch(`https://spythere.github.io/api/td2/data/locales.json`)).json();
|
||||||
|
|
||||||
|
i18n.global.mergeLocaleMessage('pl', localeData.pl);
|
||||||
|
i18n.global.mergeLocaleMessage('en', localeData.en);
|
||||||
|
}
|
||||||
|
|||||||
+126
-1
@@ -1,5 +1,130 @@
|
|||||||
{
|
{
|
||||||
"app": {
|
"app": {
|
||||||
"title": "Rolling stock editor"
|
"title": "ROLLING STOCK EDITOR"
|
||||||
|
},
|
||||||
|
"footer": {
|
||||||
|
"disclaimer": "This site has only an informational intent. The author does not carry responsibility for creating trains not allowed by {tos}!",
|
||||||
|
"tos": "Train Driver 2 simulator rules",
|
||||||
|
"tos-href": "https://docs.google.com/document/d/1UAAPUtN0d_RoS4RgOzEzllJZJhA0VcizzCzKW4QylbY/edit#heading=h.1ldcvhomwjp9",
|
||||||
|
"version-check": "Site is complete for version {version} of Train Driver 2 simulator"
|
||||||
|
},
|
||||||
|
"inputs": {
|
||||||
|
"title": "CHOOSE A VEHICLE",
|
||||||
|
"input-vehicle": "Choose a traction unit",
|
||||||
|
"input-carwagon": "Choose a carriage",
|
||||||
|
"cargo-title": "Cargo (only selected freight cars)",
|
||||||
|
"no-cargo-available": "no cargo available",
|
||||||
|
"cargo-empty": "empty",
|
||||||
|
"loco-e": "ELECTR.",
|
||||||
|
"loco-s": "DIESEL",
|
||||||
|
"loco-ezt": "EMU",
|
||||||
|
"loco-szt": "DMU",
|
||||||
|
"car-passenger": "PASSENGER",
|
||||||
|
"car-cargo": "FREIGHT",
|
||||||
|
"action-add": "ADD NEW",
|
||||||
|
"action-swap": "SWAP WITH",
|
||||||
|
"real-stock": "REAL POLISH STOCK"
|
||||||
|
},
|
||||||
|
"preview": {
|
||||||
|
"title": "RAILWAY VEHICLE PREVIEW",
|
||||||
|
"loading": "IMAGE LOADING...",
|
||||||
|
"desc": "Choose a railway vehicle above to see its preview",
|
||||||
|
"sponsor-only": "* SPONSORS ONLY",
|
||||||
|
"loco-e": "ELECTRIC LOCO",
|
||||||
|
"loco-s": "DIESEL LOCO",
|
||||||
|
"loco-ezt": "ELECTRIC M.U.",
|
||||||
|
"loco-szt": "DIESEL M.U.",
|
||||||
|
"car-passenger": "PASSENGER CARRIAGE",
|
||||||
|
"car-cargo": "FREIGHT CAR",
|
||||||
|
"cabin": "Cabin type:",
|
||||||
|
"construction": "Construction type:"
|
||||||
|
},
|
||||||
|
"topbar": {
|
||||||
|
"stock-list": "STOCK",
|
||||||
|
"wiki-list": "VEHICLES",
|
||||||
|
"number-generator": "NUMBER GEN.",
|
||||||
|
"stock-generator": "STOCK GEN."
|
||||||
|
},
|
||||||
|
"stocklist": {
|
||||||
|
"vehicle-no": "VEHICLE NO.",
|
||||||
|
"no-vehicle-chosen": "NO VEHICLE CHOSEN",
|
||||||
|
"action-move-up": "MOVE UP",
|
||||||
|
"action-move-down": "MOVE DOWN",
|
||||||
|
"action-remove": "REMOVE",
|
||||||
|
"action-upload": "LOAD",
|
||||||
|
"action-download": "DOWNLOAD",
|
||||||
|
"action-copy": "COPY",
|
||||||
|
"action-reset": "RESET",
|
||||||
|
"action-shuffle": "SHUFFLE",
|
||||||
|
"mass": "Mass",
|
||||||
|
"mass-accepted": "accepted",
|
||||||
|
"length": "Length",
|
||||||
|
"vmax": "vMax",
|
||||||
|
"coldstart-info": "Cold start heading locomotive (only locos 303E & 203E type)",
|
||||||
|
"list-empty": "Stock list is empty!",
|
||||||
|
"warning-not-suitable": "EP07 & EP08 type locomotives are designed for passenger traffic only!",
|
||||||
|
"warning-passenger-too-long": "Maximum length of a passenger train may not be greater than 350m!",
|
||||||
|
"warning-freight-too-long": "Maximum length of a freight train may not be greater than 650m!",
|
||||||
|
"warning-too-many-locos": "This train has too many traction units!",
|
||||||
|
"warning-too-heavy": "This train is too heavy! Check {href}",
|
||||||
|
"acceptable-mass-docs": "acceptable rolling stock masses (PL)"
|
||||||
|
},
|
||||||
|
"stockgen": {
|
||||||
|
"title": "FREIGHT TRAIN GENERATOR",
|
||||||
|
"properties-title": "ROLLING STOCK PROPERTIES",
|
||||||
|
"properties-desc": "⇐ Add a locomotive in the first place of the stock list to include it in a drawing!",
|
||||||
|
"input-mass": "Max. mass (t)",
|
||||||
|
"input-length": "Max. length (m)",
|
||||||
|
"input-carcount": "Max. car count",
|
||||||
|
"cargo-title": "CARGO",
|
||||||
|
"cargo-desc": "Choose cargo you want to fill available cars with:",
|
||||||
|
"chosen-title": "CARS WITH CHOSEN CARGO",
|
||||||
|
"chosen-empty-warning": "Choose at least one cargo type to see available cars!",
|
||||||
|
"chosen-warning": "Cars containing chosen cargo are shown below. Hover over a type to see a preview of the car. Click it to include/exclude it from a drawing (only highlighted types will be included).",
|
||||||
|
"action-generate": "GENERATE",
|
||||||
|
"action-generate-empty": "GENERATE EMPTY",
|
||||||
|
"action-reset": "RESET CARGO"
|
||||||
|
},
|
||||||
|
"numgen": {
|
||||||
|
"title": "TRAIN NUMBER GENERATOR",
|
||||||
|
"start-region": "Beginning construction region",
|
||||||
|
"end-region": "Terminating construction region",
|
||||||
|
"train-category": "Train category",
|
||||||
|
"number-info": "Generated train number:",
|
||||||
|
"warning": "Choose category and construction regions (optionally)",
|
||||||
|
"td2-wiki": "> Polish rules of train numbering (TD2 wiki)",
|
||||||
|
"td2-wiki-link": "https://wiki.td2.info.pl/index.php?title=Zasady_numeracji_poci%C4%85g%C3%B3w/en",
|
||||||
|
"action-random-region": "DRAW REGIONS",
|
||||||
|
"action-random-number": "DRAW A NUMBER",
|
||||||
|
"categories": {
|
||||||
|
"EI": "domestic express (EI)",
|
||||||
|
"MP/RP": "(inter)voivodeship bullet (MP/RP)",
|
||||||
|
"RO": "regional passenger (RO)",
|
||||||
|
"PW": "empty passenger (PW)",
|
||||||
|
"TM": "mass transport freight (TM)",
|
||||||
|
"TK": "non-mass transport freight (TK)",
|
||||||
|
"LT": "locomotive alone (LT)"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"wiki": {
|
||||||
|
"title": "LIST OF AVAILABLE VEHICLES",
|
||||||
|
"action-vehicles": "TRACTION UNITS",
|
||||||
|
"action-carriages": "CARRIAGES",
|
||||||
|
"search": "Search for a vehicle...",
|
||||||
|
"header": {
|
||||||
|
"image": "Image",
|
||||||
|
"type": "Name",
|
||||||
|
"power": "Type",
|
||||||
|
"constructionType": "Construction",
|
||||||
|
"coldStart": "Cold start",
|
||||||
|
"length": "Length",
|
||||||
|
"mass": "Mass",
|
||||||
|
"maxSpeed": "Speed",
|
||||||
|
"cargoCount": "Cargo count"
|
||||||
|
},
|
||||||
|
"loco-ezt": "EMU",
|
||||||
|
"loco-szt": "DMU",
|
||||||
|
"loco-s": "Diesel locomotive",
|
||||||
|
"loco-e": "Electric locomotive"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+58
-30
@@ -3,12 +3,13 @@
|
|||||||
"title": "EDYTOR SKŁADÓW ONLINE"
|
"title": "EDYTOR SKŁADÓW ONLINE"
|
||||||
},
|
},
|
||||||
"footer": {
|
"footer": {
|
||||||
"disclaimer": "Ta strona ma charakter informacyjny. Autor nie ponosi odpowiedzialności za tworzenie pociągów niezgodnych z {href}!",
|
"disclaimer": "Ta strona ma charakter informacyjny. Autor nie ponosi odpowiedzialności za tworzenie pociągów niezgodnych z {tos}!",
|
||||||
"tos": "regulaminem symulatora Train Driver 2",
|
"tos": "regulaminem symulatora Train Driver 2",
|
||||||
|
"tos-href": "https://docs.google.com/document/d/1UAAPUtN0d_RoS4RgOzEzllJZJhA0VcizzCzKW4QylbY/edit",
|
||||||
"version-check": "Strona jest kompletna dla wersji {version} symulatora TD2"
|
"version-check": "Strona jest kompletna dla wersji {version} symulatora TD2"
|
||||||
},
|
},
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"title": "WYBIERZ POJAZDY / WAGONY",
|
"title": "WYBIERZ POJAZD SZYNOWY",
|
||||||
"input-vehicle": "Wybierz pojazd trakcyjny",
|
"input-vehicle": "Wybierz pojazd trakcyjny",
|
||||||
"input-carwagon": "Wybierz wagon",
|
"input-carwagon": "Wybierz wagon",
|
||||||
"cargo-title": "Ładunek (tylko wybrane towarowe)",
|
"cargo-title": "Ładunek (tylko wybrane towarowe)",
|
||||||
@@ -26,13 +27,17 @@
|
|||||||
},
|
},
|
||||||
"preview": {
|
"preview": {
|
||||||
"title": "PODGLĄD WYBRANEGO POJAZDU",
|
"title": "PODGLĄD WYBRANEGO POJAZDU",
|
||||||
|
"loading": "ŁADOWANIE OBRAZU...",
|
||||||
"desc": "Wybierz pojazd lub wagon, aby zobaczyć jego podgląd powyżej",
|
"desc": "Wybierz pojazd lub wagon, aby zobaczyć jego podgląd powyżej",
|
||||||
|
"sponsor-only": "* TYLKO DLA SPONSORÓW",
|
||||||
"loco-e": "ELEKTROWÓZ",
|
"loco-e": "ELEKTROWÓZ",
|
||||||
"loco-s": "SPALINOWÓZ",
|
"loco-s": "SPALINOWÓZ",
|
||||||
"loco-ezt": "EZT",
|
"loco-ezt": "EZT",
|
||||||
"loco-szt": "SZT",
|
"loco-szt": "SZT",
|
||||||
"car-passenger": "WAGON PASAŻERSKI",
|
"car-passenger": "WAGON PASAŻERSKI",
|
||||||
"car-cargo": "WAGON TOWAROWY"
|
"car-cargo": "WAGON TOWAROWY",
|
||||||
|
"cabin": "Typ kabiny:",
|
||||||
|
"construction": "Typ konstrukcji:"
|
||||||
},
|
},
|
||||||
"topbar": {
|
"topbar": {
|
||||||
"stock-list": "SKŁAD",
|
"stock-list": "SKŁAD",
|
||||||
@@ -42,6 +47,7 @@
|
|||||||
},
|
},
|
||||||
"stocklist": {
|
"stocklist": {
|
||||||
"vehicle-no": "POJAZD NR",
|
"vehicle-no": "POJAZD NR",
|
||||||
|
"no-vehicle-chosen": "NIE WYBRANO POJAZDU",
|
||||||
"action-move-up": "PRZENIEŚ WYŻEJ",
|
"action-move-up": "PRZENIEŚ WYŻEJ",
|
||||||
"action-move-down": "PRZENIEŚ NIŻEJ",
|
"action-move-down": "PRZENIEŚ NIŻEJ",
|
||||||
"action-remove": "USUŃ",
|
"action-remove": "USUŃ",
|
||||||
@@ -51,11 +57,17 @@
|
|||||||
"action-reset": "ZRESETUJ",
|
"action-reset": "ZRESETUJ",
|
||||||
"action-shuffle": "PRZETASUJ",
|
"action-shuffle": "PRZETASUJ",
|
||||||
"mass": "Masa",
|
"mass": "Masa",
|
||||||
"mass-accepted": "Masa dopuszczalna",
|
"mass-accepted": "dopuszczalna",
|
||||||
"length": "Długość",
|
"length": "Długość",
|
||||||
"vmax": "vMax",
|
"vmax": "vMax",
|
||||||
"coldstart-info": "Zimny start lokomotywy czołowej (tylko elektrowozy typów 303E i 203E)",
|
"coldstart-info": "Zimny start lokomotywy czołowej (tylko elektrowozy typów 303E i 203E)",
|
||||||
"list-empty-warning": "Lista pojazdów jest pusta!"
|
"list-empty": "Lista pojazdów jest pusta!",
|
||||||
|
"warning-not-suitable": "Lokomotywy EP07 i EP08 są przeznaczone jedynie do ruchu pasażerskiego!",
|
||||||
|
"warning-passenger-too-long": "Maksymalna długość składów pasażerskich nie może przekraczać 350m!",
|
||||||
|
"warning-freight-too-long": "Maksymalna długość składów innych niż pasażerskie nie może przekraczać 650m!",
|
||||||
|
"warning-too-many-locos": "Ten skład posiada za dużo pojazdów trakcyjnych!",
|
||||||
|
"warning-too-heavy": "Ten skład jest za ciężki! Sprawdź {href}",
|
||||||
|
"acceptable-mass-docs": "dopuszczalne masy składów"
|
||||||
},
|
},
|
||||||
"stockgen": {
|
"stockgen": {
|
||||||
"title": "GENERATOR SKŁADU TOWAROWEGO",
|
"title": "GENERATOR SKŁADU TOWAROWEGO",
|
||||||
@@ -73,30 +85,46 @@
|
|||||||
"action-generate-empty": "WYGENERUJ PRÓŻNE WAGONY",
|
"action-generate-empty": "WYGENERUJ PRÓŻNE WAGONY",
|
||||||
"action-reset": "ZRESETUJ ŁADUNKI"
|
"action-reset": "ZRESETUJ ŁADUNKI"
|
||||||
},
|
},
|
||||||
"cargo": {
|
"numgen": {
|
||||||
"kontenery": "kontenery",
|
"title": "GENERATOR NUMERU POCIĄGU",
|
||||||
"chłodnia": "chłodnia",
|
"start-region": "Początkowy obszar konstrukcyjny",
|
||||||
"drobnica": "drobnica",
|
"end-region": "Końcowy obszar konstrukcyjny",
|
||||||
"węgiel": "węgiel",
|
"train-category": "Kategoria pociągu",
|
||||||
"ruda": "ruda",
|
"number-info": "Wygenerowany numer pociągu:",
|
||||||
"piasek": "piasek",
|
"warning": "Wybierz kategorię oraz obszary konstrukcyjne (opcjonalnie)",
|
||||||
"kreda": "kreda",
|
"td2-wiki": "> Szczegółowe zasady numeracji (wikipedia TD2)",
|
||||||
"kamień": "kamień",
|
"td2-wiki-link": "https://wiki.td2.info.pl/index.php?title=Zasady_numeracji_poci%C4%85g%C3%B3w",
|
||||||
"złom": "złom",
|
"action-random-region": "LOSUJ OBSZARY",
|
||||||
"paliwo": "paliwo",
|
"action-random-number": "LOSUJ NUMER",
|
||||||
"melasa": "melasa",
|
"categories": {
|
||||||
"żwir": "żwir",
|
"EI": "ekspres krajowy (EI)",
|
||||||
"koła": "koła",
|
"MP/RP": "(między)wojewódzki pośpieszny (MP/RP)",
|
||||||
"drewno": "drewno",
|
"RO": "wojewódzki osobowy (RO)",
|
||||||
"szyny": "szyny",
|
"PW": "próżny \"służbowy\" (PW)",
|
||||||
"kable": "kable",
|
"TM": "towarowy do przewozów masowych (TM)",
|
||||||
"kruszywo": "kruszywo",
|
"TK": "towarowy do obsługi stacji (TK)",
|
||||||
"techniczne": "techniczne",
|
"LT": "lokomotywa luzem (LT)"
|
||||||
"poczta": "poczta",
|
}
|
||||||
"cement": "cement",
|
},
|
||||||
"wapno": "wapno",
|
"wiki": {
|
||||||
"soda": "soda",
|
"title": "LISTA DOSTĘPNYCH POJAZDÓW",
|
||||||
"pszenica": "pszenica",
|
"action-vehicles": "POJ. TRAKCYJNE",
|
||||||
"kukurydza": "kukurydza"
|
"action-carriages": "WAGONY",
|
||||||
|
"search": "Wyszukaj pojazd...",
|
||||||
|
"header": {
|
||||||
|
"image": "Zdjęcie",
|
||||||
|
"type": "Nazwa",
|
||||||
|
"power": "Rodzaj",
|
||||||
|
"constructionType": "Konstrukcja",
|
||||||
|
"coldStart": "Zimny start",
|
||||||
|
"length": "Długość",
|
||||||
|
"mass": "Masa",
|
||||||
|
"maxSpeed": "Prędkość",
|
||||||
|
"cargoCount": "Ładunki"
|
||||||
|
},
|
||||||
|
"loco-ezt": "EZT",
|
||||||
|
"loco-szt": "SZT",
|
||||||
|
"loco-s": "Spalinowóz",
|
||||||
|
"loco-e": "Elektrowóz"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+4
-2
@@ -4,18 +4,20 @@ import { registerSW } from 'virtual:pwa-register';
|
|||||||
import { createI18n } from 'vue-i18n';
|
import { createI18n } from 'vue-i18n';
|
||||||
|
|
||||||
import App from './App.vue';
|
import App from './App.vue';
|
||||||
import { LocaleMessageSchema, locales } from './i18n';
|
import { LocaleMessageSchema, fetchBackendTranslations, locales } from './i18n';
|
||||||
|
|
||||||
const pinia = createPinia();
|
const pinia = createPinia();
|
||||||
|
|
||||||
const i18n = createI18n<[LocaleMessageSchema], 'en' | 'pl'>({
|
const i18n = createI18n<[LocaleMessageSchema], 'en' | 'pl'>({
|
||||||
locale: 'pl',
|
locale: 'en',
|
||||||
fallbackLocale: 'pl',
|
fallbackLocale: 'pl',
|
||||||
legacy: false,
|
legacy: false,
|
||||||
globalInjection: true,
|
globalInjection: true,
|
||||||
messages: locales,
|
messages: locales,
|
||||||
});
|
});
|
||||||
|
|
||||||
|
fetchBackendTranslations(i18n);
|
||||||
|
|
||||||
registerSW({
|
registerSW({
|
||||||
immediate: true,
|
immediate: true,
|
||||||
});
|
});
|
||||||
|
|||||||
Reference in New Issue
Block a user