Add Spanish localization (synchronized with crowdin) (#734)

* Add files via upload

* Update README.es_ES.md

* Create en.json

* Update README.es_ES.md

* Update README.es_ES.md

* Update en.json

* updated spanish json, added lang

* Rename README.es_ES.md to README.es.md

* Update README.md

Spanish has been added to the list of available languages.

* Update README.fr.md

Spanish has been added to the list of available languages.

* Update README.it.md

Spanish has been added to the list of available languages.

* Update README.jp.md

Spanish has been added to the list of available languages.

* Update README.ru_RU.md

Spanish has been added to the list of available languages.

* Update README.zh_CN.md

Spanish has been added to the list of available languages.

* Fixed translation tags on profile tab

* [Implem. Fix] Past names

* Updating strings

* Update localization strings in en.json

* Temporary fix to world clasification dropdown localization

* Updating spanish translations

* Update translations

* Removing things my vscode changed lol

* Updating spanish translations

---------

Co-authored-by: Miguel Campo (migue802) <contact@migue802.com>
Co-authored-by: migue802 <54627022+migue802@users.noreply.github.com>
This commit is contained in:
BlueOvi
2024-02-27 20:17:39 +01:00
committed by GitHub
parent 78e9503af0
commit 176b599cbd
11 changed files with 1855 additions and 55 deletions

View File

@@ -639,12 +639,12 @@ speechSynthesis.getVoices();
if (
args.json.length > 0 &&
((options.params.offset += args.json.length),
// eslint-disable-next-line no-nested-ternary
options.N > 0
? options.N > options.params.offset
: options.N < 0
? args.json.length
: options.params.n === args.json.length)
// eslint-disable-next-line no-nested-ternary
options.N > 0
? options.N > options.params.offset
: options.N < 0
? args.json.length
: options.params.n === args.json.length)
) {
this.bulk(options);
} else if ('done' in options) {
@@ -1029,7 +1029,7 @@ speechSynthesis.getVoices();
(this.worlddialogshortname &&
this.locationobject.shortName &&
this.worlddialogshortname ===
this.locationobject.shortName) ||
this.locationobject.shortName) ||
this.currentuserid === this.locationobject.userId
) {
this.isUnlocked = true;
@@ -5355,7 +5355,7 @@ speechSynthesis.getVoices();
if (
!this.enablePrimaryPassword &&
(await configRepository.getString('lastUserLoggedIn')) !==
null
null
) {
// login at startup
this.loginForm.loading = true;
@@ -5771,7 +5771,7 @@ speechSynthesis.getVoices();
if (i > 0) {
if (
data[i - 1].created_at ===
this.sharedFeed.gameLog.lastEntryDate &&
this.sharedFeed.gameLog.lastEntryDate &&
forceUpdate === false
) {
return;
@@ -5804,9 +5804,9 @@ speechSynthesis.getVoices();
if (
feedItem.type === 'OnPlayerLeft' &&
Date.parse(feedItem.created_at) >=
currentUserLeaveTime &&
currentUserLeaveTime &&
Date.parse(feedItem.created_at) <=
currentUserLeaveTimeOffset
currentUserLeaveTimeOffset
) {
wristArr.splice(k, 1);
w--;
@@ -5823,7 +5823,7 @@ speechSynthesis.getVoices();
feedItem.type === 'OnPlayerJoined' &&
Date.parse(feedItem.created_at) >= locationJoinTime &&
Date.parse(feedItem.created_at) <=
locationJoinTimeOffset
locationJoinTimeOffset
) {
wristArr.splice(k, 1);
w--;
@@ -5989,7 +5989,7 @@ speechSynthesis.getVoices();
if (i > 0) {
if (
data[i - 1].created_at ===
this.sharedFeed.feedTable.lastEntryDate &&
this.sharedFeed.feedTable.lastEntryDate &&
forceUpdate === false
) {
return;
@@ -6069,7 +6069,7 @@ speechSynthesis.getVoices();
if (i > 0) {
if (
data[i - 1].created_at ===
this.sharedFeed.notificationTable.lastEntryDate &&
this.sharedFeed.notificationTable.lastEntryDate &&
forceUpdate === false
) {
return;
@@ -6135,7 +6135,7 @@ speechSynthesis.getVoices();
if (i > 0) {
if (
data[i - 1].created_at ===
this.sharedFeed.friendLogTable.lastEntryDate &&
this.sharedFeed.friendLogTable.lastEntryDate &&
forceUpdate === false
) {
return;
@@ -6204,7 +6204,7 @@ speechSynthesis.getVoices();
if (i > 0) {
if (
data[i - 1].created_at ===
this.sharedFeed.moderationAgainstTable.lastEntryDate &&
this.sharedFeed.moderationAgainstTable.lastEntryDate &&
forceUpdate === false
) {
return;
@@ -7340,7 +7340,7 @@ speechSynthesis.getVoices();
if (this.loginForm.lastUserLoggedIn) {
var user =
this.loginForm.savedCredentials[
this.loginForm.lastUserLoggedIn
this.loginForm.lastUserLoggedIn
];
if (typeof user !== 'undefined') {
await webApiService.clearCookies();
@@ -7790,8 +7790,8 @@ speechSynthesis.getVoices();
savedCredentials:
(await configRepository.getString('savedCredentials')) !== null
? JSON.parse(
await configRepository.getString('savedCredentials')
)
await configRepository.getString('savedCredentials')
)
: {},
lastUserLoggedIn: await configRepository.getString('lastUserLoggedIn'),
rules: {
@@ -7843,9 +7843,9 @@ speechSynthesis.getVoices();
.then(({ value }) => {
let saveCredential =
this.loginForm.savedCredentials[
Object.keys(
this.loginForm.savedCredentials
)[0]
Object.keys(
this.loginForm.savedCredentials
)[0]
];
security
.decrypt(
@@ -10096,7 +10096,7 @@ speechSynthesis.getVoices();
if (
ref.location !== this.lastLocation.location &&
ref.travelingToLocation !==
this.lastLocation.location
this.lastLocation.location
) {
// fix $location_at with private
ref.$location_at = joinTime;
@@ -11452,7 +11452,7 @@ speechSynthesis.getVoices();
var displayName = this.getDisplayNameFromPhotonId(senderId);
var feed = `RPC ${displayName} ${
this.photonEventType[eventData.EventType]
}${eventName}`;
}${eventName}`;
console.log('VrcRpc:', feed);
}
}
@@ -12507,8 +12507,8 @@ speechSynthesis.getVoices();
$app.methods.formatSeconds = function (duration) {
var pad = function (num, size) {
return `000${num}`.slice(size * -1);
},
return `000${num}`.slice(size * -1);
},
time = parseFloat(duration).toFixed(3),
hours = Math.floor(time / 60 / 60),
minutes = Math.floor(time / 60) % 60,
@@ -12735,7 +12735,7 @@ speechSynthesis.getVoices();
(this.nowPlaying.startTime -
this.nowPlaying.offset +
this.nowPlaying.length) *
1000
1000
);
}
} else if (!this.discordHideImage && L.thumbnailImageUrl) {
@@ -14607,7 +14607,7 @@ speechSynthesis.getVoices();
speechSynthesis.cancel();
if (
(await configRepository.getString('VRCX_notificationTTS')) ===
'Never' &&
'Never' &&
this.notificationTTS !== 'Never'
) {
this.speak('Notification text-to-speech enabled');
@@ -17231,7 +17231,7 @@ speechSynthesis.getVoices();
var response = await webApiService.execute({
url: `${
this.avatarRemoteDatabaseProvider
}?${type}=${encodeURIComponent(search)}&n=5000`,
}?${type}=${encodeURIComponent(search)}&n=5000`,
method: 'GET',
headers: {
Referer: 'https://vrcx.pypy.moe'
@@ -28946,6 +28946,41 @@ speechSynthesis.getVoices();
}
});
}
// reload translations - temporary solution
$app.userDialogWorldSortingOptions = {
updated: {
name: $t('dialog.user.worlds.sorting.updated'),
value: 'updated'
},
created: {
name: $t('dialog.user.worlds.sorting.created'),
value: 'created'
},
favorites: {
name: $t('dialog.user.worlds.sorting.favorites'),
value: 'favorites'
},
popularity: {
name: $t('dialog.user.worlds.sorting.popularity'),
value: 'popularity'
}
};
$app.userDialogWorldOrderOptions = {
descending: {
name: $t('dialog.user.worlds.order.descending'),
value: 'descending'
},
ascending: {
name: $t('dialog.user.worlds.order.ascending'),
value: 'ascending'
}
};
$app.userDialog.worldSorting = $app.userDialogWorldSortingOptions.updated;
$app.userDialog.worldOrder = $app.userDialogWorldOrderOptions.descending;
};
initLanguage();

File diff suppressed because it is too large Load Diff

View File

@@ -22,6 +22,9 @@ import elements_vi from 'element-ui/lib/locale/lang/vi';
import ru_RU from './ru/en.json' assert { type: 'JSON' };
import elements_ru from 'element-ui/lib/locale/lang/ru-RU';
import es from './es/en.json' assert { type: 'JSON' };
import elements_es from 'element-ui/lib/locale/lang/es';
const localized_en = { ...en, ...elements_en };
const localized_zh_TW = { ...zh_TW, ...elements_zh_TW };
const localized_zh_CN = { ...zh_CN, ...elements_zh_CN };
@@ -30,6 +33,7 @@ const localized_ja = { ...ja, ...elements_ja };
const localized_fr = { ...fr, ...elements_fr };
const localized_vi = { ...vi, ...elements_vi };
const localized_ru = { ...ru_RU, ...elements_ru };
const localized_es = { ...es, ...elements_es };
export {
localized_en as en,
@@ -39,5 +43,7 @@ export {
localized_ja as ja_JP,
localized_fr as fr,
localized_vi as vi,
localized_ru as ru_RU
localized_ru as ru_RU,
localized_es as es
};

View File

@@ -60,12 +60,12 @@ mixin profileTab()
el-tooltip(placement="top" :content="$t('view.profile.clear_results_tooltip')" :disabled="hideTooltips")
el-button(type="default" @click="inviteMessageTable.visible = false" size="mini" icon="el-icon-delete" circle style="margin-left:5px")
data-tables(v-if="inviteMessageTable.visible" v-bind="inviteMessageTable" style="margin-top:10px")
el-table-column(label="Slot" prop="slot" sortable="custom" width="70")
el-table-column(label="Message" prop="message")
el-table-column(label="Cool Down" prop="updatedAt" sortable="custom" width="110" align="right")
el-table-column(:label="$t('table.profile.invite_messages.slot')" prop="slot" sortable="custom" width="70")
el-table-column(:label="$t('table.profile.invite_messages.message')" prop="message")
el-table-column(:label="$t('table.profile.invite_messages.cool_down')" prop="updatedAt" sortable="custom" width="110" align="right")
template(v-once #default="scope")
countdown-timer(:datetime="scope.row.updatedAt" :hours="1")
el-table-column(label="Action" width="60" align="right")
el-table-column(:label="$t('table.profile.invite_messages.action')" width="60" align="right")
template(v-once #default="scope")
el-button(type="text" icon="el-icon-edit" size="mini" @click="showEditInviteMessageDialog('message', scope.row)")
div.options-container
@@ -75,12 +75,12 @@ mixin profileTab()
el-tooltip(placement="top" :content="$t('view.profile.clear_results_tooltip')" :disabled="hideTooltips")
el-button(type="default" @click="inviteResponseMessageTable.visible = false" size="mini" icon="el-icon-delete" circle style="margin-left:5px")
data-tables(v-if="inviteResponseMessageTable.visible" v-bind="inviteResponseMessageTable" style="margin-top:10px")
el-table-column(label="Slot" prop="slot" sortable="custom" width="70")
el-table-column(label="Message" prop="message")
el-table-column(label="Cool Down" prop="updatedAt" sortable="custom" width="110" align="right")
el-table-column(:label="$t('table.profile.invite_messages.slot')" prop="slot" sortable="custom" width="70")
el-table-column(:label="$t('table.profile.invite_messages.message')" prop="message")
el-table-column(:label="$t('table.profile.invite_messages.cool_down')" prop="updatedAt" sortable="custom" width="110" align="right")
template(v-once #default="scope")
countdown-timer(:datetime="scope.row.updatedAt" :hours="1")
el-table-column(label="Action" width="60" align="right")
el-table-column(:label="$t('table.profile.invite_messages.action')" width="60" align="right")
template(v-once #default="scope")
el-button(type="text" icon="el-icon-edit" size="mini" @click="showEditInviteMessageDialog('response', scope.row)")
div.options-container
@@ -90,12 +90,12 @@ mixin profileTab()
el-tooltip(placement="top" :content="$t('view.profile.clear_results_tooltip')" :disabled="hideTooltips")
el-button(type="default" @click="inviteRequestMessageTable.visible = false" size="mini" icon="el-icon-delete" circle style="margin-left:5px")
data-tables(v-if="inviteRequestMessageTable.visible" v-bind="inviteRequestMessageTable" style="margin-top:10px")
el-table-column(label="Slot" prop="slot" sortable="custom" width="70")
el-table-column(label="Message" prop="message")
el-table-column(label="Cool Down" prop="updatedAt" sortable="custom" width="110" align="right")
el-table-column(:label="$t('table.profile.invite_messages.slot')" prop="slot" sortable="custom" width="70")
el-table-column(:label="$t('table.profile.invite_messages.message')" prop="message")
el-table-column(:label="$t('table.profile.invite_messages.cool_down')" prop="updatedAt" sortable="custom" width="110" align="right")
template(v-once #default="scope")
countdown-timer(:datetime="scope.row.updatedAt" :hours="1")
el-table-column(label="Action" width="60" align="right")
el-table-column(:label="$t('table.profile.invite_messages.action')" width="60" align="right")
template(v-once #default="scope")
el-button(type="text" icon="el-icon-edit" size="mini" @click="showEditInviteMessageDialog('request', scope.row)")
div.options-container
@@ -105,21 +105,21 @@ mixin profileTab()
el-tooltip(placement="top" :content="$t('view.profile.clear_results_tooltip')" :disabled="hideTooltips")
el-button(type="default" @click="inviteRequestResponseMessageTable.visible = false" size="mini" icon="el-icon-delete" circle style="margin-left:5px")
data-tables(v-if="inviteRequestResponseMessageTable.visible" v-bind="inviteRequestResponseMessageTable" style="margin-top:10px")
el-table-column(label="Slot" prop="slot" sortable="custom" width="70")
el-table-column(label="Message" prop="message")
el-table-column(label="Cool Down" prop="updatedAt" sortable="custom" width="110" align="right")
el-table-column(:label="$t('table.profile.invite_messages.slot')" prop="slot" sortable="custom" width="70")
el-table-column(:label="$t('table.profile.invite_messages.message')" prop="message")
el-table-column(:label="$t('table.profile.invite_messages.cool_down')" prop="updatedAt" sortable="custom" width="110" align="right")
template(v-once #default="scope")
countdown-timer(:datetime="scope.row.updatedAt" :hours="1")
el-table-column(label="Action" width="60" align="right")
el-table-column(:label="$t('table.profile.invite_messages.action')" width="60" align="right")
template(v-once #default="scope")
el-button(type="text" icon="el-icon-edit" size="mini" @click="showEditInviteMessageDialog('requestResponse', scope.row)")
div.options-container
span.header {{ $t('view.profile.past_display_names') }}
data-tables(v-bind="pastDisplayNameTable" style="margin-top:10px")
el-table-column(label="Date" prop="updated_at" sortable="custom")
el-table-column(:label="$t('table.profile.previous_display_name.date')" prop="updated_at" sortable="custom")
template(v-once #default="scope")
span {{ scope.row.updated_at | formatDate('long') }}
el-table-column(label="Name" prop="displayName")
el-table-column(:label="$t('table.profile.previous_display_name.name')" prop="displayName")
div.options-container
span.header {{ $t('view.profile.config_json') }}
el-tooltip(placement="top" :content="$t('view.profile.refresh_tooltip')" :disabled="hideTooltips")