mirror of
https://github.com/romancm/gamebrary
synced 2024-11-24 20:23:06 +00:00
Localization (#108)
* Added new strings to localization * Add localization support to ReviewBox Add localization support to GameScreenshots Add localization support to GameVideos * Finished finding hardcoded strings
This commit is contained in:
parent
378a04432f
commit
26c72206a9
13 changed files with 88 additions and 42 deletions
|
@ -10,14 +10,14 @@
|
|||
</button>
|
||||
|
||||
<modal
|
||||
title="Game tags"
|
||||
:title="$t('listActions.title.gameTags')"
|
||||
ref="tags"
|
||||
message="Use tags to better organize your games"
|
||||
:message="$t('listActions.message.useTags')"
|
||||
padded
|
||||
>
|
||||
<button
|
||||
class="small primary"
|
||||
title="Game tags"
|
||||
:title="$t('listActions.title.gameTags')"
|
||||
>
|
||||
<i class="fas fa-tag" />
|
||||
</button>
|
||||
|
@ -32,7 +32,7 @@
|
|||
>
|
||||
<button
|
||||
class="small accent"
|
||||
title="Game tags"
|
||||
:title="$t('listActions.title.gameTags')"
|
||||
>
|
||||
<i class="fas fa-cog" />
|
||||
</button>
|
||||
|
|
|
@ -2,33 +2,27 @@
|
|||
<div v-if="game" class="review-box">
|
||||
<div class="info">
|
||||
<section v-if="playerPerspectives">
|
||||
<strong>{{ $t('gameDetails.reviewBox.playerPerspectives') }}</strong>
|
||||
{{ playerPerspectives }}
|
||||
<strong>Perspective</strong> {{ playerPerspectives }}
|
||||
</section>
|
||||
|
||||
<section v-if="gameModes">
|
||||
<strong>{{ $t('gameDetails.reviewBox.gameModes') }}</strong>
|
||||
{{ gameModes }}
|
||||
<strong>{{ $t('gameDetails.reviewBox.gameModes') }}</strong> {{ gameModes }}
|
||||
</section>
|
||||
|
||||
<section v-if="genres">
|
||||
<strong>{{ $t('gameDetails.reviewBox.genres') }}</strong>
|
||||
{{ genres }}
|
||||
<strong>{{ $t('gameDetails.reviewBox.genres') }}</strong> {{ genres }}
|
||||
</section>
|
||||
|
||||
<section v-if="gamePlatforms">
|
||||
<strong>{{ $t('gameDetails.reviewBox.gamePlatforms') }}</strong>
|
||||
{{ gamePlatforms }}
|
||||
<strong>{{ $t('gameDetails.reviewBox.gamePlatforms') }}</strong> {{ gamePlatforms }}
|
||||
</section>
|
||||
|
||||
<section v-if="developers">
|
||||
<strong>{{ $t('gameDetails.reviewBox.developers') }}</strong>
|
||||
{{ developers }}
|
||||
<strong>{{ $t('gameDetails.reviewBox.developers') }}</strong> {{ developers }}
|
||||
</section>
|
||||
|
||||
<section v-if="publishers">
|
||||
<strong>{{ $t('gameDetails.reviewBox.publishers') }}</strong>
|
||||
{{ publishers }}
|
||||
<strong>{{ $t('gameDetails.reviewBox.publishers') }}</strong> {{ publishers }}
|
||||
</section>
|
||||
|
||||
<!-- <section v-if="releaseDate">
|
||||
|
|
|
@ -30,7 +30,7 @@
|
|||
|
||||
<div class="note-actions">
|
||||
<button class="info tag" v-shortkey="['shift', 'c']" @shortkey="reset" @click="reset">
|
||||
Cancel
|
||||
{{ $t('global.cancel') }}
|
||||
</button>
|
||||
|
||||
<button class="error tag" v-shortkey="['shift', 'del']" @shortkey="deleteNote" @click="deleteNote">
|
||||
|
@ -44,7 +44,7 @@
|
|||
@click="saveNote"
|
||||
:disabled="!localNote"
|
||||
>
|
||||
Save
|
||||
{{ $t('save') }}
|
||||
</button>
|
||||
</div>
|
||||
|
||||
|
@ -59,7 +59,7 @@
|
|||
v-if="!hasNote && !editingNote"
|
||||
>
|
||||
<i class="fas fa-sticky-note" />
|
||||
Add note
|
||||
{{ $t('notes.addNote') }}
|
||||
</button>
|
||||
</div>
|
||||
</template>
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
ref="searchInput"
|
||||
type="text"
|
||||
v-model="searchText"
|
||||
placeholder="Search here"
|
||||
:placeholder="$t('gameSearch.input.placeholder')"
|
||||
/>
|
||||
|
||||
<button class="primary small search-button" @click="search">
|
||||
|
@ -17,7 +17,7 @@
|
|||
<!-- TODO: move logic out of template -->
|
||||
<small v-if="gamesInList.length" :title="gamesInList.map(({ name }) => name).join(', ')">
|
||||
<strong>{{ gamesInList.length }} game{{ gamesInList.length === 1 ? '' : 's' }}</strong>
|
||||
from search results already in your list
|
||||
{{ $t('gameSearch.alreadyInList') }}
|
||||
</small>
|
||||
|
||||
<div class="search-results" ref="searchResults" v-if="filteredResults.length > 0">
|
||||
|
@ -32,14 +32,14 @@
|
|||
</div>
|
||||
|
||||
<panel class="warning" v-if="noResults">
|
||||
<h4>No results found for "{{searchText}}"</h4>
|
||||
<p>Missing a game? Help out the community and <a href="https://www.igdb.com/games/new" target="_blank">Add it to IGDB</a></p>
|
||||
<h4>{{ $t('gameSearch.noResultsFound') }} "{{searchText}}"</h4>
|
||||
<p>{{ $t('gameSearch.missingGame') }} <a href="https://www.igdb.com/games/new" target="_blank">{{$t('gameSearch.addToIGDB')}}</a></p>
|
||||
</panel>
|
||||
|
||||
<div class="search-actions">
|
||||
<button class="small filled info" v-shortkey="['esc']" @shortkey="back" @click="back" title="back">
|
||||
<i class="fas fa-chevron-left" />
|
||||
Back
|
||||
{{ $t('back') }}
|
||||
</button>
|
||||
|
||||
<igdb-credit linkable />
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
<template lang="html">
|
||||
<a :href="href" class="igdb-credit" target="_blank" :class="{ gray }">
|
||||
<img :src="`/static/img/igdb-logo${logo}.svg`" />
|
||||
<strong>Powered by IGDB</strong>
|
||||
<strong>{{ $t('igdbCredit.poweredBy') }}</strong>
|
||||
</a>
|
||||
</template>
|
||||
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
class="settings"
|
||||
:class="{ dark: darkModeEnabled }"
|
||||
>
|
||||
<h4>Global</h4>
|
||||
<h4>{{ $t('settings.title.global') }}</h4>
|
||||
|
||||
<section>
|
||||
<i class="fas fa-moon" />
|
||||
|
|
|
@ -12,13 +12,13 @@
|
|||
class="add-tag"
|
||||
:class="textColor"
|
||||
>
|
||||
<h5>Add tag</h5>
|
||||
<h5>{{ $t('tags.title.addTag') }}</h5>
|
||||
|
||||
<div class="tag-input">
|
||||
<input
|
||||
type="text"
|
||||
v-model="tagName"
|
||||
placeholder="Tag name"
|
||||
:placeholder="$t('tags.input.placeholder')"
|
||||
/>
|
||||
|
||||
<input
|
||||
|
@ -35,7 +35,7 @@
|
|||
>
|
||||
<i class="fas fa-plus-circle" />
|
||||
|
||||
Create tag
|
||||
{{ $t('tags.button.createTag') }}
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
|
||||
<div v-else>
|
||||
<div v-show="!wallpaperUrl">
|
||||
Upload wallpaper
|
||||
{{ $t('settings.wallpaper.title') }}
|
||||
|
||||
<input
|
||||
type="file"
|
||||
|
@ -16,7 +16,7 @@
|
|||
</div>
|
||||
|
||||
<div v-if="wallpaperUrl">
|
||||
<h5>Semi transparent lists</h5>
|
||||
<h5>{{ $t('settings.wallpaper.transparency') }}</h5>
|
||||
|
||||
<div class="button-group">
|
||||
<button
|
||||
|
@ -24,7 +24,7 @@
|
|||
:class="{ primary: !transparent }"
|
||||
@click="setTransparent(false)"
|
||||
>
|
||||
No
|
||||
{{ $t('global.no') }}
|
||||
</button>
|
||||
|
||||
<button
|
||||
|
@ -32,14 +32,14 @@
|
|||
:class="{ primary: transparent }"
|
||||
@click="setTransparent(true)"
|
||||
>
|
||||
Yes
|
||||
{{ $t('global.yes') }}
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<br>
|
||||
<br>
|
||||
|
||||
<h5>Current wallpaper</h5>
|
||||
<h5>{{ $t('settings.wallpaper.currentWallpaper') }}</h5>
|
||||
|
||||
<img
|
||||
:src="wallpaperUrl"
|
||||
|
@ -48,7 +48,7 @@
|
|||
|
||||
<button class="error small tiny" @click="removeWallpaper">
|
||||
<i class="fas fa-trash" />
|
||||
Remove wallpaper
|
||||
{{ $t('settings.wallpaper.removeWallpaper') }}
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -3,12 +3,20 @@ module.exports = {
|
|||
share: 'Share',
|
||||
empty: 'empty',
|
||||
back: 'Back',
|
||||
save: 'Save',
|
||||
global: {
|
||||
cancel: 'Cancel',
|
||||
create: 'Create',
|
||||
filter: 'Filter',
|
||||
with: 'with',
|
||||
by: 'by',
|
||||
no: 'no',
|
||||
yes: 'yes',
|
||||
or: 'or',
|
||||
returnHome: 'Return home',
|
||||
},
|
||||
errors: {
|
||||
pageNotFound: 'Page not found',
|
||||
},
|
||||
platforms: {
|
||||
computersArcade: 'Computers and Arcade',
|
||||
|
@ -21,6 +29,7 @@ module.exports = {
|
|||
nd: 'nd',
|
||||
rd: 'rd',
|
||||
th: 'th',
|
||||
donateMessage: 'Gamebrary is free and open source, consider helping its development by',
|
||||
},
|
||||
game: {
|
||||
add: 'Add game',
|
||||
|
@ -52,6 +61,7 @@ module.exports = {
|
|||
delete: 'Delete list',
|
||||
moveLeft: 'Move left',
|
||||
moveRight: 'Move right',
|
||||
emptyList: 'This list is empty',
|
||||
},
|
||||
settings: {
|
||||
darkTheme: 'Dark theme',
|
||||
|
@ -65,8 +75,50 @@ module.exports = {
|
|||
message: 'Your account data will be deleted forever.',
|
||||
title: 'Are you sure?',
|
||||
},
|
||||
title: {
|
||||
global: 'Global',
|
||||
},
|
||||
donate: 'donating',
|
||||
reportBugs: 'reporting bugs',
|
||||
submitFeedback: 'submitting feedback',
|
||||
wallpaper: {
|
||||
title: 'Upload wallpaper',
|
||||
transparency: 'Semi transparent lists',
|
||||
currentWallpaper: 'Current wallpaper',
|
||||
removeWallpaper: 'Remove wallpaper',
|
||||
},
|
||||
},
|
||||
tags: {
|
||||
title: {
|
||||
addTag: 'Add Tag',
|
||||
},
|
||||
button: {
|
||||
createTag: 'Create tag',
|
||||
},
|
||||
input: {
|
||||
placeholder: 'Tag name',
|
||||
},
|
||||
applyTag: 'Apply tag',
|
||||
useTags: 'Use tags to better organise your games',
|
||||
},
|
||||
listActions: {
|
||||
title: {
|
||||
gameTags: 'Game tags'
|
||||
},
|
||||
},
|
||||
igdbCredit: {
|
||||
poweredBy: 'Powered by IGDB',
|
||||
},
|
||||
gameSearch: {
|
||||
input: {
|
||||
placeholder: 'Search here',
|
||||
},
|
||||
alreadyInList: 'from search results already in your list',
|
||||
noResultsFound: 'No results found for ',
|
||||
missingGame: 'Missing a game? Help out the community and',
|
||||
addToIGDB: 'Add it to IGDB',
|
||||
},
|
||||
notes: {
|
||||
addNote: 'Add note',
|
||||
},
|
||||
};
|
||||
|
|
|
@ -24,8 +24,8 @@
|
|||
|
||||
<modal
|
||||
ref="tag"
|
||||
title="Apply tag"
|
||||
message="Use tags to better organize your games"
|
||||
:title="$t('tags.applyTag')"
|
||||
:message="$t('tags.useTags')"
|
||||
padded
|
||||
>
|
||||
<div slot="content">
|
||||
|
|
|
@ -1,10 +1,10 @@
|
|||
<template lang="html">
|
||||
<div class="not-found-page">
|
||||
<h1>404</h1>
|
||||
<h3>Page not found</h3>
|
||||
<h3>{{ $t('errors.pageNotFound') }}</h3>
|
||||
|
||||
<a :href="homeUrl" class="link primary">
|
||||
Return home
|
||||
{{ $t('global.returnHome') }}
|
||||
</a>
|
||||
</div>
|
||||
</template>
|
||||
|
|
|
@ -13,7 +13,7 @@
|
|||
|
||||
<footer>
|
||||
<small>
|
||||
Gamebrary is free and open source, consider helping its development by
|
||||
{{ $t('platforms.donateMessage') }}
|
||||
<a href="https://www.paypal.me/RomanCervantes/5" target="_blank">
|
||||
{{ $t('settings.donate') }}
|
||||
</a>
|
||||
|
@ -21,7 +21,7 @@
|
|||
<a href="https://github.com/romancmx/gamebrary/issues" target="_blank">
|
||||
{{ $t('settings.reportBugs') }}
|
||||
</a>
|
||||
or
|
||||
{{$t('global.or')}}
|
||||
<a href="https://goo.gl/forms/r0juBCsZaUtJ03qb2" target="_blank">
|
||||
{{ $t('settings.submitFeedback') }}
|
||||
</a>
|
||||
|
|
|
@ -10,7 +10,7 @@
|
|||
<header>{{ list.name }} ({{ list.games.length }})</header>
|
||||
|
||||
<div class="games">
|
||||
<p v-if="!list.games.length">This list is empty</p>
|
||||
<p v-if="!list.games.length">{{$('list.emptyList')}}</p>
|
||||
|
||||
<div
|
||||
v-if="publicGameData[game]"
|
||||
|
|
Loading…
Reference in a new issue