···260260 throw new InvariantException("'{$this->rank}' is not a valid rank.");
261261 }
262262263263- foreach (['total_score', 'accuracy', 'max_combo', 'passed'] as $field) {
263263+ if ($this->accuracy === null || $this->accuracy < 0 || $this->accuracy > 1) {
264264+ throw new InvariantException('Invalid accuracy.');
265265+ }
266266+267267+ // unsigned int (as per the column)
268268+ if ($this->total_score === null || $this->total_score < 0 || $this->total_score > 4294967295) {
269269+ throw new InvariantException('Invalid total_score.');
270270+ }
271271+272272+ foreach (['max_combo', 'passed'] as $field) {
264273 if (!present($this->$field)) {
265274 throw new InvariantException("field missing: '{$field}'");
266275 }
···352361 ? LegacyScore\Best\Model::getClass($this->getMode())
353362 : LegacyScore\Model::getClass($this->getMode());
354363364364+ // Only attributes available to best model (and `pass`).
355365 $score = new $scoreClass([
356366 'beatmap_id' => $this->beatmap_id,
357357- 'beatmapset_id' => $this->beatmap?->beatmapset_id ?? 0,
358367 'countmiss' => $statistics->miss,
359368 'date' => $this->ended_at_json,
360369 'enabled_mods' => app('mods')->idsToBitset(array_column($data->mods, 'acronym')),
···364373 'pp' => $this->pp,
365374 'replay' => $this->has_replay,
366375 'score' => $this->legacy_total_score,
367367- 'scorechecksum' => "\0",
368376 'user_id' => $this->user_id,
369377 ]);
370378
+6-1
app/Models/UserStatistics/Model.php
···33333434 public $timestamps = false;
3535 public $incrementing = false;
3636+ /**
3737+ * allows preloading the value if it's known through other means
3838+ * (for use in RankingController)
3939+ */
4040+ public int $countryRank;
36413742 const UPDATED_AT = 'last_update';
3843···160165161166 public function countryRank()
162167 {
163163- return $this->memoize(__FUNCTION__, function () {
168168+ return $this->countryRank ?? $this->memoize(__FUNCTION__, function () {
164169 if (!$this->isRanked()) {
165170 return;
166171 }
···59596060 &--static {
6161 // defined here so it doesn't trigger tooltip in addition to usercard
6262- .u-ellipsis-overflow();
6262+ .ellipsis-overflow();
6363 background-color: transparent;
6464 padding-left: 0;
6565 padding-right: 0;
···11# Copyright (c) ppy Pty Ltd <contact@ppy.sh>. Licensed under the GNU Affero General Public License v3.0.
22# See the LICENCE file in the repository root for full licence text.
3344-import AccountEditAvatar from 'core-legacy/account-edit-avatar'
55-import AccountEdit from 'core-legacy/account-edit'
64import BbcodePreview from 'core-legacy/bbcode-preview'
75import BeatmapPack from 'core-legacy/beatmap-pack'
86import ChangelogChartLoader from 'core-legacy/changelog-chart-loader'
···5755 BeatmapPack.initialize()
5856 StoreCheckout.initialize()
59576060-window.accountEdit ?= new AccountEdit
6161-window.accountEditAvatar ?= new AccountEditAvatar
6258window.bbcodePreview ?= new BbcodePreview
6359window.changelogChartLoader ?= new ChangelogChartLoader
6460window.checkboxValidation ?= new CheckboxValidation
···8480window.forumPostsSeek ?= new ForumPostsSeek(window.forum)
8581window.forumTopicPostJump ?= new ForumTopicPostJump(window.forum)
8682window.forumTopicReply ?= new ForumTopicReply(bbcodePreview: window.bbcodePreview, forum: window.forum, stickyFooter: osuCore.stickyFooter)
8787-window.nav2 ?= new Nav2(osuCore.clickMenu)
8383+window.nav2 ?= new Nav2(osuCore.clickMenu, osuCore.captcha)
888489859086$(document).on 'change', '.js-url-selector', (e) ->
···3030 @observable isLoading = false;
3131 @observable isMarkingAsRead = false;
3232 @observable stacks = new Map<string, NotificationStack>();
3333- @observable total = 0;
3333+ @observable private _total = 0;
34343535 @computed get hasMore() {
3636 // undefined means not loaded yet.
···49495050 @computed get isEmpty() {
5151 return this.total <= 0;
5252+ }
5353+5454+ @computed get total() {
5555+ // combination of latency and delays processing marking as read can cause the display count to go negative.
5656+ return this._total > 0 ? this._total : 0;
5757+ }
5858+5959+ set total(val: number) {
6060+ this._total = val;
5261 }
53625463 @computed get stackNotificationCount() {
···91100 removeStack(stack: NotificationStack) {
92101 const exists = this.stacks.delete(stack.id);
93102 if (exists) this.total -= stack.total;
103103+94104 return exists;
95105 }
96106
+19-13
resources/js/osu-core.ts
···3344import { BeatmapsetSearchController } from 'beatmaps/beatmapset-search-controller';
55import ChatWorker from 'chat/chat-worker';
66+import AccountEdit from 'core/account-edit';
77+import AccountEditAvatar from 'core/account-edit-avatar';
68import AccountEditBlocklist from 'core/account-edit-blocklist';
79import BrowserTitleWithNotificationCount from 'core/browser-title-with-notification-count';
810import Captcha from 'core/captcha';
···42444345// will this replace main.coffee eventually?
4446export default class OsuCore {
4747+ readonly accountEdit;
4848+ readonly accountEditAvatar;
4549 readonly accountEditBlocklist;
4650 readonly beatmapsetSearchController;
4751 readonly browserTitleWithNotificationCount;
···132136 // TODO: requires dynamic imports to lazy load modules.
133137 this.dataStore = new RootDataStore();
134138 this.accountEditBlocklist = new AccountEditBlocklist(this);
139139+ this.accountEdit = new AccountEdit(this);
140140+ this.accountEditAvatar = new AccountEditAvatar(this);
135141 this.userLoginObserver = new UserLoginObserver();
136142 this.windowFocusObserver = new WindowFocusObserver();
137143···147153 }
148154 }
149155156156+ @action
157157+ readonly setCurrentUser = (userOrEmpty: typeof window.currentUser) => {
158158+ const user = userOrEmpty.id == null ? undefined : userOrEmpty;
159159+160160+ if (user != null) {
161161+ this.dataStore.userStore.update(user);
162162+ }
163163+ this.socketWorker.setUserId(user?.id ?? null);
164164+ this.currentUser = user;
165165+ window.currentUser = userOrEmpty;
166166+ this.userPreferences.setUser(this.currentUser);
167167+ };
168168+150169 readonly updateCurrentUser = () => {
151170 // Remove from DOM so only new data is parsed on navigation.
152171 const currentUser = parseJsonNullable<typeof window.currentUser>('json-current-user', true);
···158177159178 private readonly onCurrentUserUpdate = (event: unknown, user: CurrentUserJson) => {
160179 this.setCurrentUser(user);
161161- };
162162-163163- @action
164164- private readonly setCurrentUser = (userOrEmpty: typeof window.currentUser) => {
165165- const user = userOrEmpty.id == null ? undefined : userOrEmpty;
166166-167167- if (user != null) {
168168- this.dataStore.userStore.update(user);
169169- }
170170- this.socketWorker.setUserId(user?.id ?? null);
171171- this.currentUser = user;
172172- window.currentUser = userOrEmpty;
173173- this.userPreferences.setUser(this.currentUser);
174180 };
175181}
+2-2
resources/lang/cs/accounts.php
···10101111 'avatar' => [
1212 'title' => 'Avatar',
1313- 'rules' => 'Prosím ujistěte se, že Váš avatar dodržuje :link.<br/>To znamená, že musí být <strong>vhodný pro všechny věkové kategorie</strong>. Tj. žádný nahota či nenávistný obsah.',
1414- 'rules_link' => 'pravidla komunity',
1313+ 'rules' => 'Ujisti se prosím, že tvůj avatar dodržuje :link.<br/>To znamená, že musí být <strong>vhodný pro všechny věkové kategorie</strong>. Tj. žádná nahota, žádný urážlivý či sugestivní obsah.',
1414+ 'rules_link' => 'kritéria vizuálního obsahu',
1515 ],
16161717 'email' => [
+3-3
resources/lang/cs/models.php
···44// See the LICENCE file in the repository root for full licence text.
5566return [
77- 'not_found' => "",
77+ 'not_found' => "Danou :model se nepodařilo najít.",
8899 'name' => [
1010- 'App\Models\Beatmap' => '',
1111- 'App\Models\Beatmapset' => '',
1010+ 'App\Models\Beatmap' => 'obtížnost beatmapy',
1111+ 'App\Models\Beatmapset' => 'beatmapu',
1212 ],
1313];
+1-1
resources/lang/de/home.php
···1313 'see_more_news' => 'mehr Neuigkeiten anzeigen',
14141515 'slogan' => [
1616- 'main' => 'das beste free-to-play Rhythmusspiel',
1616+ 'main' => 'das besteste free-to-play rhythmusspiel',
1717 'sub' => 'Rhythmus ist nur ein Klick entfernt',
1818 ],
1919 ],
+3-3
resources/lang/de/models.php
···44// See the LICENCE file in the repository root for full licence text.
5566return [
77- 'not_found' => "",
77+ 'not_found' => "Angegebenes Item (:model) konnte nicht gefunden werden.",
8899 'name' => [
1010- 'App\Models\Beatmap' => '',
1111- 'App\Models\Beatmapset' => '',
1010+ 'App\Models\Beatmap' => 'Schwierigkeitsgrad',
1111+ 'App\Models\Beatmapset' => 'Beatmap',
1212 ],
1313];
+2-2
resources/lang/es-419/accounts.php
···10101111 'avatar' => [
1212 'title' => 'Avatar',
1313- 'rules' => 'Por favor, asegúrate de que tu avatar se adhiera a :link.<br/>Esto significa que debe ser <strong>adecuado para todas las edades</strong>. Es decir, sin desnudez, profanidad o contenido sugestivo.',
1414- 'rules_link' => 'las reglas de la comunidad',
1313+ 'rules' => 'Por favor, asegúrate de que tu avatar se adhiera a :link.<br/>Esto significa que debe ser <strong>adecuado para todas las edades</strong>. Es decir, sin desnudos, contenido ofensivo o sugerente.',
1414+ 'rules_link' => 'las consideraciones de contenido visual',
1515 ],
16161717 'email' => [
···66return [
77 'support' => [
88 'convinced' => [
99- 'title' => '',
1010- 'support' => '',
1111- 'gift' => '',
1212- 'instructions' => '',
99+ 'title' => '¡Me has convencido! :D',
1010+ 'support' => 'apoya a osu!',
1111+ 'gift' => 'o regálale un soporte a otro jugador',
1212+ 'instructions' => 'haz clic en el botón del corazón para ir a la osu!store',
1313 ],
1414 'why-support' => [
1515- 'title' => '',
1515+ 'title' => '¿Por qué debería apoyar a osu!? ¿A dónde va el dinero?',
16161717 'team' => [
1818- 'title' => '',
1919- 'description' => '',
1818+ 'title' => 'Apoyar al equipo',
1919+ 'description' => 'Un pequeño equipo desarrolla y mantiene osu! Tu apoyo les ayuda a, ya sabes... vivir.',
2020 ],
2121 'infra' => [
2222- 'title' => '',
2323- 'description' => '',
2222+ 'title' => 'Infraestructura del servidor',
2323+ 'description' => 'Las contribuciones se destinan a los servidores para el funcionamiento del sitio web, los servicios multijugador, las tablas de clasificación en línea, etc.',
2424 ],
2525 'featured-artists' => [
2626- 'title' => '',
2727- 'description' => '',
2828- 'link_text' => '',
2626+ 'title' => 'Artistas destacados',
2727+ 'description' => 'Con tu apoyo, podremos acercarnos a más artistas increíbles y obtener más licencias de música para osu!',
2828+ 'link_text' => 'Ver la lista actual »',
2929 ],
3030 'ads' => [
3131- 'title' => '',
3232- 'description' => '',
3131+ 'title' => 'Mantener osu! autosuficiente',
3232+ 'description' => 'Tus contribuciones ayudan a mantener el juego independiente y completamente libre de anuncios y patrocinadores externos.',
3333 ],
3434 'tournaments' => [
3535- 'title' => '',
3636- 'description' => '',
3737- 'link_text' => '',
3535+ 'title' => 'Torneos oficiales',
3636+ 'description' => 'Ayuda a financiar el funcionamiento (y los premios) de las osu! World Cups oficiales.',
3737+ 'link_text' => 'Explorar torneos »',
3838 ],
3939 'bounty-program' => [
4040- 'title' => '',
4141- 'description' => '',
4242- 'link_text' => '',
4040+ 'title' => 'Programa de recompensas de colaboración abierta',
4141+ 'description' => 'Apoya a los contribuidores de la comunidad que han dado su tiempo y esfuerzo para ayudar a hacer que osu! sea mejor.',
4242+ 'link_text' => 'Descubre más »',
4343 ],
4444 ],
4545 'perks' => [
4646- 'title' => '',
4646+ 'title' => '¡Genial! ¿Qué beneficios obtengo?',
4747 'osu_direct' => [
4848- 'title' => '',
4949- 'description' => '',
4848+ 'title' => 'osu!direct',
4949+ 'description' => 'Obtén acceso rápido y sencillo para buscar y descargar mapas sin tener que salir del juego.',
5050 ],
51515252 'friend_ranking' => [
5353- 'title' => '',
5454- 'description' => "",
5353+ 'title' => 'Clasificación entre amigos',
5454+ 'description' => "Compara tus resultados con los de tus amigos en la tabla de clasificación de un mapa, tanto en el juego como en el sitio web.",
5555 ],
56565757 'country_ranking' => [
5858- 'title' => '',
5959- 'description' => '',
5858+ 'title' => 'Clasificación nacional',
5959+ 'description' => 'Conquista tu país antes de conquistar el mundo.',
6060 ],
61616262 'mod_filtering' => [
6363- 'title' => '',
6464- 'description' => '',
6363+ 'title' => 'Filtrado por mods',
6464+ 'description' => '¿Asociarte solo con personas que juegan con HDHR? ¡No hay problema!',
6565 ],
66666767 'auto_downloads' => [
6868- 'title' => '',
6969- 'description' => '',
6868+ 'title' => 'Descargas automáticas',
6969+ 'description' => '¡Los mapas se descargarán automáticamente en las partidas multijugador, cuando estés viendo a otros jugadores, o cuando hagas clic en los enlaces correspondientes en el chat!',
7070 ],
71717272 'upload_more' => [
7373- 'title' => '',
7474- 'description' => '',
7373+ 'title' => 'Sube más',
7474+ 'description' => 'Espacios para mapas pendientes adicionales (por mapa clasificado) hasta un máximo de 10.',
7575 ],
76767777 'early_access' => [
7878- 'title' => '',
7979- 'description' => '',
7878+ 'title' => 'Acceso anticipado',
7979+ 'description' => '¡Obtén acceso anticipado a nuevas versiones con nuevas funciones antes de que se hagan públicas!<br/><br/>¡Esto también incluye el acceso anticipado a las nuevas funciones del sitio web!',
8080 ],
81818282 'customisation' => [
8383- 'title' => '',
8484- 'description' => "",
8383+ 'title' => 'Personalización',
8484+ 'description' => "Destaca subiendo una imagen de portada personalizada o creando una sección '¡yo!' totalmente personalizable dentro de tu perfil de usuario.",
8585 ],
86868787 'beatmap_filters' => [
8888- 'title' => '',
8989- 'description' => '',
8888+ 'title' => 'Filtros en la búsqueda de mapas',
8989+ 'description' => 'Filtra las búsquedas de mapas por mapas jugados y no jugados, o por grado conseguido.',
9090 ],
91919292 'yellow_fellow' => [
9393- 'title' => '',
9494- 'description' => '',
9393+ 'title' => 'Color amarillo en el chat',
9494+ 'description' => 'Resalta dentro del chat del juego con un amarillo brillante en tu nombre de usuario.',
9595 ],
96969797 'speedy_downloads' => [
9898- 'title' => '',
9999- 'description' => '',
9898+ 'title' => 'Descargas rápidas',
9999+ 'description' => 'Restricciones de descarga más permisivas, especialmente al utilizar osu!direct.',
100100 ],
101101102102 'change_username' => [
103103- 'title' => '',
104104- 'description' => '',
103103+ 'title' => 'Cambiar nombre de usuario',
104104+ 'description' => 'Un cambio de nombre gratuito se incluye con tu primera compra de supporter.',
105105 ],
106106107107 'skinnables' => [
108108- 'title' => '',
109109- 'description' => '',
108108+ 'title' => 'Más elementos de personalización',
109109+ 'description' => 'Más elementos personalizables en el juego, como el fondo del menú principal.',
110110 ],
111111112112 'feature_votes' => [
113113- 'title' => '',
114114- 'description' => '',
113113+ 'title' => 'Votos para nuevas funciones',
114114+ 'description' => 'Votos para solicitudes de funciones. (2 al mes)',
115115 ],
116116117117 'sort_options' => [
118118- 'title' => '',
119119- 'description' => '',
118118+ 'title' => 'Opciones de orden',
119119+ 'description' => 'La posibilidad de ver las clasificaciones de tu país, amigos o mods en el juego.',
120120 ],
121121122122 'more_favourites' => [
123123- 'title' => '',
124124- 'description' => '',
123123+ 'title' => 'Más favoritos',
124124+ 'description' => 'El número máximo de mapas que puedes marcar como favorito aumenta de :normally → :supporter',
125125 ],
126126 'more_friends' => [
127127- 'title' => '',
128128- 'description' => '',
127127+ 'title' => 'Más amigos',
128128+ 'description' => 'El número máximo de amigos que puedes tener aumenta de :normally → :supporter',
129129 ],
130130 'more_beatmaps' => [
131131- 'title' => '',
132132- 'description' => '',
131131+ 'title' => 'Subir más mapas',
132132+ 'description' => 'El número de mapas pendientes que puedes tener a la vez se calcula a partir de un valor base más una bonificación adicional por cada mapa clasificado que tengas actualmente (hasta un límite).<br/><br/>Normalmente esto es :base más :bonus por mapa clasificado (hasta :bonus_max). Con supporter, esto aumenta a :supporter_base más :supporter_bonus por cada mapa clasificado (hasta :supporter_bonus_max).',
133133 ],
134134 'friend_filtering' => [
135135- 'title' => '',
136136- 'description' => '',
135135+ 'title' => 'Tablas de clasificación entre amigos',
136136+ 'description' => '¡Compite con tus amigos y compara tus puntuaciones con las de ellos!',
137137 ],
138138139139 ],
140140 'supporter_status' => [
141141- 'contribution' => '',
142142- 'gifted' => "",
143143- 'not_yet' => "",
144144- 'valid_until' => '',
145145- 'was_valid_until' => '',
141141+ 'contribution' => '¡Gracias por tu apoyo hasta ahora! ¡Has contribuido con :dollars con la compra de :tags etiquetas!',
142142+ 'gifted' => "Has regalado :giftedTags de tus compras (eso es un valor de :giftedDollars), ¡qué generoso!",
143143+ 'not_yet' => "Nunca has tenido una etiqueta de osu!supporter :(",
144144+ 'valid_until' => '¡Tu etiqueta de osu!supporter actual es válida hasta el :date!',
145145+ 'was_valid_until' => 'Tu etiqueta de osu!supporter fue válida hasta el :date.',
146146 ],
147147 ],
148148];
+47-47
resources/lang/es-419/contest.php
···5566return [
77 'header' => [
88- 'small' => '',
99- 'large' => '',
88+ 'small' => 'Compite de más formas que solo presionando círculos.',
99+ 'large' => 'Concursos de la comunidad',
1010 ],
11111212 'index' => [
1313- 'nav_title' => '',
1313+ 'nav_title' => 'listado',
1414 ],
15151616 'judge' => [
1717- 'hide_judged' => '',
1818- 'nav_title' => '',
1919- 'no_current_vote' => '',
2020- 'update' => '',
1717+ 'hide_judged' => 'ocultar las inscripciones evaluadas',
1818+ 'nav_title' => 'evaluar',
1919+ 'no_current_vote' => 'aún no has votado.',
2020+ 'update' => 'actualizar',
2121 'validation' => [
2222- 'missing_score' => '',
2323- 'contest_vote_judged' => '',
2222+ 'missing_score' => 'puntuación faltante',
2323+ 'contest_vote_judged' => 'no puedes votar en concursos ya evaluados',
2424 ],
2525- 'voted' => '',
2525+ 'voted' => 'Ya has votado por esta opción.',
2626 ],
27272828 'judge_results' => [
2929- '_' => '',
3030- 'creator' => '',
3131- 'score' => '',
3232- 'total_score' => '',
2929+ '_' => 'Resultados de la evaluación',
3030+ 'creator' => 'creador',
3131+ 'score' => 'Puntuación',
3232+ 'total_score' => 'puntuación total',
3333 ],
34343535 'voting' => [
3636- 'judge_link' => '',
3737- 'judged_notice' => '',
3838- 'login_required' => '',
3939- 'over' => '',
4040- 'show_voted_only' => '',
3636+ 'judge_link' => 'Eres un juez en este concurso. ¡Evalúa las inscripciones aquí!',
3737+ 'judged_notice' => 'Este concurso está utilizando el sistema de evaluación, los jueces están procesando actualmente las inscripciones.',
3838+ 'login_required' => 'Inicia sesión para votar.',
3939+ 'over' => 'El plazo de votación para este concurso ha finalizado',
4040+ 'show_voted_only' => 'Mostrar mis votos',
41414242 'best_of' => [
4343- 'none_played' => "",
4343+ 'none_played' => "¡Parece que no has jugado ningún mapa que cumpla con los requisitos de este concurso!",
4444 ],
45454646 'button' => [
4747- 'add' => '',
4848- 'remove' => '',
4949- 'used_up' => '',
4747+ 'add' => 'Votar',
4848+ 'remove' => 'Quitar voto',
4949+ 'used_up' => 'Ya has usado todos tus votos',
5050 ],
51515252 'progress' => [
5353- '_' => '',
5353+ '_' => ':used / :max votos usados',
5454 ],
55555656 'requirement' => [
5757 'playlist_beatmapsets' => [
5858- 'incomplete_play' => '',
5858+ 'incomplete_play' => 'Debes jugar todos los mapas en las listas de juego especificadas antes de votar',
5959 ],
6060 ],
6161 ],
62626363 'entry' => [
6464- '_' => '',
6565- 'login_required' => '',
6666- 'silenced_or_restricted' => '',
6767- 'preparation' => '',
6868- 'drop_here' => '',
6969- 'download' => '',
6464+ '_' => 'inscripción',
6565+ 'login_required' => 'Inicia sesión para participar en el concurso.',
6666+ 'silenced_or_restricted' => 'No puedes participar en los concursos mientras estés restringido o silenciado.',
6767+ 'preparation' => 'Estamos preparando este concurso actualmente. ¡Espera pacientemente!',
6868+ 'drop_here' => 'Suelta tu inscripción aquí',
6969+ 'download' => 'Descargar archivo .osz',
70707171 'wrong_type' => [
7272- 'art' => '',
7373- 'beatmap' => '',
7474- 'music' => '',
7272+ 'art' => 'Solo se aceptan archivos .jpg y .png en este concurso.',
7373+ 'beatmap' => 'Solo se aceptan archivos .osu en este concurso.',
7474+ 'music' => 'Solo se aceptan archivos .mp3 en este concurso.',
7575 ],
76767777- 'wrong_dimensions' => '',
7878- 'too_big' => '',
7777+ 'wrong_dimensions' => 'Los envíos para este concurso deben ser de :widthx:height',
7878+ 'too_big' => 'Los envíos para este concurso solo pueden ser de hasta :limit.',
7979 ],
80808181 'beatmaps' => [
8282- 'download' => '',
8282+ 'download' => 'Descargar inscripción',
8383 ],
84848585 'vote' => [
8686- 'list' => '',
8787- 'count' => '',
8888- 'points' => '',
8686+ 'list' => 'votos',
8787+ 'count' => ':count_delimited voto|:count_delimited votos',
8888+ 'points' => ':count_delimited punto|:count_delimited puntos',
8989 ],
90909191 'dates' => [
9292- 'ended' => '',
9393- 'ended_no_date' => '',
9292+ 'ended' => 'Finalizó el :date',
9393+ 'ended_no_date' => 'Finalizado',
94949595 'starts' => [
9696- '_' => '',
9797- 'soon' => '',
9696+ '_' => 'Comienza el :date',
9797+ 'soon' => 'soon™',
9898 ],
9999 ],
100100101101 'states' => [
102102- 'entry' => '',
103103- 'voting' => '',
104104- 'results' => '',
102102+ 'entry' => 'Inscripción abierta',
103103+ 'voting' => 'Votación iniciada',
104104+ 'results' => 'Resultados',
105105 ],
106106];
+16-16
resources/lang/es-419/errors.php
···44// See the LICENCE file in the repository root for full licence text.
5566return [
77- 'load_failed' => '',
88- 'missing_route' => '',
99- 'no_restricted_access' => '',
1010- 'supporter_only' => '',
1111- 'unknown' => '',
77+ 'load_failed' => 'Error al cargar los datos.',
88+ 'missing_route' => 'URL no válida o método de solicitud incorrecto.',
99+ 'no_restricted_access' => 'No podrás realizar esta acción mientras tu cuenta esté en estado restringido.',
1010+ 'supporter_only' => 'Debes ser un osu!supporter para utilizar esta función.',
1111+ 'unknown' => 'Se produjo un error desconocido.',
12121313 'codes' => [
1414- 'http-401' => '',
1515- 'http-403' => '',
1616- 'http-404' => '',
1717- 'http-429' => '',
1414+ 'http-401' => 'Inicia sesión para continuar.',
1515+ 'http-403' => 'Acceso denegado.',
1616+ 'http-404' => 'No encontrado.',
1717+ 'http-429' => 'Demasiados intentos. Inténtalo de nuevo más tarde.',
1818 ],
1919 'account' => [
2020 'profile-order' => [
2121- 'generic' => '',
2121+ 'generic' => 'Se produjo un error. Intenta actualizar la página.',
2222 ],
2323 ],
2424 'beatmaps' => [
2525- 'invalid_mode' => '',
2626- 'standard_converts_only' => '',
2525+ 'invalid_mode' => 'Modo especificado no válido.',
2626+ 'standard_converts_only' => 'No hay puntuaciones disponibles para el modo solicitado en esta dificultad del mapa.',
2727 ],
2828 'checkout' => [
2929- 'generic' => '',
2929+ 'generic' => 'Se produjo un error mientras se preparaba el pago.',
3030 ],
3131 'search' => [
3232- 'default' => '',
3333- 'invalid_cursor_exception' => '',
3434- 'operation_timeout_exception' => '',
3232+ 'default' => 'No se ha podido obtener ningún resultado, inténtalo de nuevo más tarde.',
3333+ 'invalid_cursor_exception' => 'Se ha especificado un parámetro para el cursor no válido.',
3434+ 'operation_timeout_exception' => 'La búsqueda está más saturada de lo habitual, inténtalo de nuevo más tarde.',
3535 ],
3636];
+19-19
resources/lang/es-419/events.php
···44// See the LICENCE file in the repository root for full licence text.
5566return [
77- 'achievement' => '',
88- 'beatmap_playcount' => '',
99- 'beatmapset_approve' => '',
1010- 'beatmapset_delete' => '',
1111- 'beatmapset_revive' => '',
1212- 'beatmapset_update' => '',
1313- 'beatmapset_upload' => '',
1414- 'empty' => "",
1515- 'rank' => '',
1616- 'rank_lost' => '',
1717- 'user_support_again' => '',
1818- 'user_support_first' => '',
1919- 'user_support_gift' => '',
2020- 'username_change' => '',
77+ 'achievement' => '<strong>¡<strong><em>:user</em></strong> ha desbloqueado la medalla «<strong>:achievement</strong>»!',
88+ 'beatmap_playcount' => '¡:beatmap ha sido jugado :count veces!',
99+ 'beatmapset_approve' => '¡:beatmapset por <strong>:user</strong> ha sido :approval!',
1010+ 'beatmapset_delete' => ':beatmapset ha sido eliminado.',
1111+ 'beatmapset_revive' => ':beatmapset ha sido revivido del sueño eterno por <strong>:user</strong>.',
1212+ 'beatmapset_update' => '<strong><em>:user</em></strong> ha actualizado el mapa «<em>:beatmapset</em>»',
1313+ 'beatmapset_upload' => '<strong><em>:user</em></strong> ha enviado un nuevo mapa «:beatmapset»',
1414+ 'empty' => "¡Este usuario no ha hecho nada notable recientemente!",
1515+ 'rank' => ':user consiguió el :rank en :beatmap (:mode)',
1616+ 'rank_lost' => '<strong><em>:user</em></strong> ha perdido el primer puesto en <em>:beatmap</em> (:mode)',
1717+ 'user_support_again' => '<strong>:user</strong> ha elegido apoyar a osu! una vez más - ¡gracias por tu generosidad!',
1818+ 'user_support_first' => '<strong>:user</strong> ha apoyado a osu! - ¡gracias por tu generosidad!',
1919+ 'user_support_gift' => '¡<strong>:user</strong> ha recibido un osu!supporter! como regalo!',
2020+ 'username_change' => '¡<strong>:previousUsername</strong> ha cambiado su nombre de usuario a <strong><em>:user</em></strong>!',
21212222 'beatmapset_status' => [
2323- 'approved' => '',
2424- 'loved' => '',
2525- 'qualified' => '',
2626- 'ranked' => '',
2323+ 'approved' => 'aprobado',
2424+ 'loved' => 'amado',
2525+ 'qualified' => 'calificado',
2626+ 'ranked' => 'clasificado',
2727 ],
28282929 'value' => [
3030- 'rank' => '',
3030+ 'rank' => 'puesto #:rank',
3131 ],
3232];
+14-14
resources/lang/es-419/follows.php
···5566return [
77 'comment' => [
88- 'empty' => '',
99- 'page_title' => '',
1010- 'title' => '',
88+ 'empty' => 'No hay comentarios observados.',
99+ 'page_title' => 'lista de seguimiento de comentarios',
1010+ 'title' => 'comentarios',
11111212 'table' => [
1313- 'latest_comment_empty' => '',
1414- 'latest_comment_value' => '',
1313+ 'latest_comment_empty' => 'sin comentarios',
1414+ 'latest_comment_value' => ':time por :username',
1515 ],
1616 ],
17171818 'forum_topic' => [
1919- 'title' => '',
1919+ 'title' => 'temas del foro',
2020 ],
21212222 'index' => [
2323- 'title_compact' => '',
2323+ 'title_compact' => 'listas de seguimiento',
2424 ],
25252626 'mapping' => [
2727- 'empty' => '',
2828- 'followers' => '',
2929- 'page_title' => '',
3030- 'title' => '',
3131- 'to_0' => '',
3232- 'to_1' => '',
2727+ 'empty' => 'No hay mappers observados.',
2828+ 'followers' => 'suscriptores de mapeo',
2929+ 'page_title' => 'lista de seguimiento de mappers',
3030+ 'title' => 'mappers',
3131+ 'to_0' => 'dejar de notificarme cuando este usuario suba un nuevo mapa',
3232+ 'to_1' => 'notificarme cuando este usuario suba un nuevo mapa',
3333 ],
34343535 'modding' => [
3636- 'title' => '',
3636+ 'title' => 'discusiones de mapas',
3737 ],
3838];
···44// See the LICENCE file in the repository root for full licence text.
5566return [
77- 'new' => '',
88- 'none' => '',
77+ 'new' => 'Nueva clave de la API heredada',
88+ 'none' => 'Sin clave.',
991010 'docs' => [
1111- '_' => '',
1212- 'github' => '',
1111+ '_' => 'La documentación está disponible en :github.',
1212+ 'github' => 'GitHub',
1313 ],
14141515 'form' => [
1616- 'create' => '',
1616+ 'create' => 'Crear clave',
1717 ],
18181919 'view' => [
2020- 'hide' => '',
2121- 'show' => '',
2222- 'delete' => '',
2020+ 'hide' => 'Ocultar clave',
2121+ 'show' => 'Mostrar clave',
2222+ 'delete' => 'Eliminar',
2323 ],
24242525 'warning' => [
2626- 'line1' => '',
2727- 'line2' => "",
2828- 'line3' => '',
2626+ 'line1' => 'No le des esto a otros.',
2727+ 'line2' => "Es equivalente a dar tu contraseña.",
2828+ 'line3' => 'Tu cuenta puede verse comprometida.',
2929 ],
3030];
+10-10
resources/lang/es-419/legacy_irc_key.php
···44// See the LICENCE file in the repository root for full licence text.
5566return [
77- 'confirm_new' => '',
88- 'new' => '',
99- 'none' => '',
77+ 'confirm_new' => '¿Crear una nueva contraseña para el IRC?',
88+ 'new' => 'Nueva contraseña heredada para el IRC',
99+ 'none' => 'Contraseña del IRC no establecida.',
10101111 'form' => [
1212- 'server_host' => '',
1313- 'server_port' => '',
1414- 'token' => '',
1515- 'username' => '',
1212+ 'server_host' => 'servidor',
1313+ 'server_port' => 'puerto',
1414+ 'token' => 'contraseña del servidor',
1515+ 'username' => 'nombre de usuario',
1616 ],
17171818 'view' => [
1919- 'hide' => '',
2020- 'show' => '',
2121- 'delete' => '',
1919+ 'hide' => 'Ocultar contraseña',
2020+ 'show' => 'Mostrar contraseña',
2121+ 'delete' => 'Eliminar',
2222 ],
2323];
+5-5
resources/lang/es-419/livestreams.php
···5566return [
77 'promote' => [
88- 'pin' => '',
99- 'unpin' => "",
88+ 'pin' => '¿Estás seguro de que quieres promocionar esta transmisión en vivo?',
99+ 'unpin' => "¿Seguro que quieres quitar la promoción de esta transmisión en vivo?",
1010 ],
11111212 'top-headers' => [
1313- 'headline' => '',
1414- 'description' => '',
1313+ 'headline' => 'Transmisiones en vivo',
1414+ 'description' => 'Los datos son obtenidos de twitch.tv cada cinco minutos basándose en la lista del directorio. ¡Siéntete libre de empezar a transmitir y aparecer en la lista! Para obtener más información sobre cómo empezar a transmitir, consulta :link.',
15151616- 'link' => '',
1616+ 'link' => 'la página de la wiki sobre las transmisiones en vivo',
1717 ],
1818];
+11-11
resources/lang/es-419/mail.php
···5566return [
77 'beatmapset_update_notice' => [
88- 'new' => '',
99- 'subject' => '',
1010- 'unwatch' => '',
1111- 'visit' => '',
88+ 'new' => 'Te informamos de que ha habido una nueva actualización en el mapa «:title» desde tu última visita.',
99+ 'subject' => 'Nueva actualización en el mapa «:title»',
1010+ 'unwatch' => 'Si ya no quieres recibir más notificaciones de este mapa, puedes hacer clic en el enlace «Dejar de ver» que se encuentra en la página de arriba, o desde la página de la lista de seguimiento de modding:',
1111+ 'visit' => 'Visita la página de discusión aquí:',
1212 ],
13131414 'common' => [
1515- 'closing' => '',
1616- 'hello' => '',
1717- 'report' => '',
1818- 'ignore' => '',
1515+ 'closing' => 'Saludos,',
1616+ 'hello' => 'Hola :user,',
1717+ 'report' => 'Responde a este correo INMEDIATAMENTE si no has solicitado este cambio.',
1818+ 'ignore' => 'Si no solicitaste esto, puedes ignorar este correo.',
1919 ],
20202121 'donation_thanks' => [
2222- 'benefit_more' => '',
2323- 'feedback' => "",
2424- 'keep_free' => '',
2222+ 'benefit_more' => '¡Además, con el tiempo aparecerán nuevas ventajas para los supporters!',
2323+ 'feedback' => "Si tienes alguna pregunta o comentario, no dudes en responder a este correo; ¡te responderé lo antes posible!",
2424+ 'keep_free' => 'Es gracias a personas como tú que osu! es capaz de mantener el juego y la comunidad funcionando sin ningún tipo de anuncios ni pagos forzados.',
2525 'keep_running' => '',
2626 'subject' => '',
2727 'translation' => '',
+3-3
resources/lang/es-419/models.php
···44// See the LICENCE file in the repository root for full licence text.
5566return [
77- 'not_found' => "",
77+ 'not_found' => "No se ha podido encontrar :model especificado.",
8899 'name' => [
1010- 'App\Models\Beatmap' => '',
1111- 'App\Models\Beatmapset' => '',
1010+ 'App\Models\Beatmap' => 'la dificultad del mapa',
1111+ 'App\Models\Beatmapset' => 'el mapa',
1212 ],
1313];
+2-2
resources/lang/es/accounts.php
···10101111 'avatar' => [
1212 'title' => 'Avatar',
1313- 'rules' => 'Por favor, asegúrate de que tu avatar se adhiera a :link.<br/>Esto significa que debe ser <strong>adecuado para todas las edades</strong>. Es decir, sin desnudez, profanidad o contenido sugestivo.',
1414- 'rules_link' => 'las reglas de la comunidad',
1313+ 'rules' => 'Por favor, asegúrate de que tu avatar se adhiera a :link.<br/>Esto significa que debe ser <strong>adecuado para todas las edades</strong>. Es decir, sin desnudez, contenido ofensivo o sugerente.',
1414+ 'rules_link' => 'las consideraciones de contenido visual',
1515 ],
16161717 'email' => [
+2-2
resources/lang/es/common.php
···5566return [
77 'confirmation' => '¿Estás seguro?',
88- 'confirmation_unsaved' => 'Se perderán todos los cambios sin guardar. ¿Está seguro?',
88+ 'confirmation_unsaved' => 'Se perderán todos los cambios sin guardar. ¿Estás seguro?',
99 'saved' => 'Guardado',
10101111 'array_and' => [
···158158 ],
159159160160 'wrong_user' => [
161161- '_' => 'Ha iniciado sesión como :user. :logout_link.',
161161+ '_' => 'Has iniciado sesión como :user. :logout_link.',
162162 'logout_link' => 'Haz clic aquí para iniciar sesión como otro usuario',
163163 ],
164164];
+4-4
resources/lang/es/community.php
···66return [
77 'support' => [
88 'convinced' => [
99- 'title' => '¡me has convencido! :D',
99+ 'title' => '¡Me has convencido! :D',
1010 'support' => 'apoyar a osu!',
1111 'gift' => 'o regalar supporter a otros jugadores',
1212 'instructions' => 'haz clic al botón del corazón para proceder a la osu!store',
···3737 'link_text' => 'Explorar torneos »',
3838 ],
3939 'bounty-program' => [
4040- 'title' => 'Programa de tecompensas de código abierto',
4141- 'description' => 'Apoya a los contribuyentes de la comunidad que han dado su tiempo y esfuerzo para ayudar a hacer que osu! sea mejor.',
4040+ 'title' => 'Programa de recompensas de código abierto',
4141+ 'description' => 'Apoya a los contribuidores de la comunidad que han dado su tiempo y esfuerzo para ayudar a hacer que osu! sea mejor.',
4242 'link_text' => 'Descubre más »',
4343 ],
4444 ],
···61616262 'mod_filtering' => [
6363 'title' => 'Filtrar por mods',
6464- 'description' => '¿Asociarte solo con personas que juegan con mods HDHR? ¡No hay problema!',
6464+ 'description' => '¿Asociarte solo con personas que juegan con HDHR? ¡No hay problema!',
6565 ],
66666767 'auto_downloads' => [
+5-5
resources/lang/es/contest.php
···55555656 'requirement' => [
5757 'playlist_beatmapsets' => [
5858- 'incomplete_play' => 'Debe jugar todos los mapas en las listas de juego especificadas antes de votar',
5858+ 'incomplete_play' => 'Debes jugar todos los mapas en las listas de juego especificadas antes de votar',
5959 ],
6060 ],
6161 ],
62626363 'entry' => [
6464 '_' => 'entrada',
6565- 'login_required' => 'Inicie sesión para participar en el concurso.',
6666- 'silenced_or_restricted' => 'No puede participar en los concursos mientras esté restringido o silenciado.',
6767- 'preparation' => 'Estamos preparando este concurso actualmente. Por favor, ¡Espera pacientemente!',
6565+ 'login_required' => 'Inicia sesión para participar en el concurso.',
6666+ 'silenced_or_restricted' => 'No puedes participar en los concursos mientras estés restringido o silenciado.',
6767+ 'preparation' => 'Estamos preparando este concurso actualmente. ¡Espera pacientemente!',
6868 'drop_here' => 'Suelta tu entrada aquí',
6969 'download' => 'Descargar archivo .osz',
7070···100100101101 'states' => [
102102 'entry' => 'Entrada abierta',
103103- 'voting' => 'Votación Iniciada',
103103+ 'voting' => 'Votación iniciada',
104104 'results' => 'Resultados',
105105 ],
106106];
+1-1
resources/lang/es/errors.php
···66return [
77 'load_failed' => 'Error al cargar los datos.',
88 'missing_route' => 'URL no válida o método de solicitud incorrecto.',
99- 'no_restricted_access' => 'No puede realizar esta acción mientras su cuenta esté en un estado restringido.',
99+ 'no_restricted_access' => 'No puedes realizar esta acción mientras tu cuenta esté en un estado restringido.',
1010 'supporter_only' => 'Debes ser un osu!supporter para usar esta característica.',
1111 'unknown' => 'Se produjo un error desconocido.',
1212
+33-33
resources/lang/es/forum.php
···4444 ],
45454646 'post' => [
4747- 'confirm_destroy' => '¿Realmente desea eliminar la publicación?',
4747+ 'confirm_destroy' => '¿Realmente deseas eliminar la publicación?',
4848 'confirm_restore' => '¿Realmente desea restaurar la publicación?',
4949 'edited' => 'Última edición por :user :when, editado :count_delimited vez en total.|Última edición por :user :when, editado :count_delimited veces en total.',
5050 'posted_at' => 'publicado :when',
···8080 'confirm_restore' => '¿Realmente desea restaurar el tema?',
8181 'deleted' => 'tema eliminado',
8282 'go_to_latest' => 'ver la última publicación',
8383- 'has_replied' => 'Ha respondido a este tema',
8383+ 'has_replied' => 'Has respondido a este tema',
8484 'in_forum' => 'en :forum',
8585 'latest_post' => ':when por :user',
8686 'latest_reply_by' => 'última respuesta por :user',
8787 'new_topic' => 'Nuevo tema',
8888- 'new_topic_login' => 'Inicie sesión para publicar un nuevo tema',
8888+ 'new_topic_login' => 'Inicia sesión para publicar un nuevo tema',
8989 'post_reply' => 'Publicar',
9090 'reply_box_placeholder' => 'Escribe aquí para responder',
9191 'reply_title_prefix' => 'Re',
···109109 'default' => 'Este tema ha estado inactivo durante mucho tiempo. Solo publique aquí si tiene una razón específica para hacerlo.',
110110111111 'new_topic' => [
112112- '_' => "Este tema ha estado inactivo durante mucho tiempo. Si no tiene una razón específica para publicar aquí, por favor :create en su lugar.",
113113- 'create' => 'cree un nuevo tema',
112112+ '_' => "Este tema ha estado inactivo durante mucho tiempo. Si no tienes una razón específica para publicar aquí, por favor :create en su lugar.",
113113+ 'create' => 'crea un nuevo tema',
114114 ],
115115 ],
116116···210210 '_' => 'Temas',
211211212212 'actions' => [
213213- 'login_reply' => 'Inicie sesión para responder',
213213+ 'login_reply' => 'Inicia sesión para responder',
214214 'reply' => 'Responder',
215215 'reply_with_quote' => 'Citar publicación y responder',
216216 'search' => 'Buscar',
···235235 'max_options' => 'Opciones por usuario',
236236 'max_options_info' => 'Este es el número de opciones que un usuario puede seleccionar al votar.',
237237 'options' => 'Opciones',
238238- 'options_info' => 'Escriba cada opción en una nueva línea. Puede introducir hasta 10 opciones.',
238238+ 'options_info' => 'Escribe cada opción en una nueva línea. Puedes introducir hasta 10 opciones.',
239239 'title' => 'Pregunta',
240240 'vote_change' => 'Permitir volver a votar.',
241241 'vote_change_info' => 'Si está activado, los usuarios podrán cambiar su voto.',
···253253 ],
254254255255 'issue_tag_added' => [
256256- 'to_0' => 'Eliminar etiqueta «agregado»',
257257- 'to_0_done' => 'Etiqueta «agregado» eliminada',
258258- 'to_1' => 'Añadir etiqueta «agregado»',
259259- 'to_1_done' => 'Etiqueta «agregado» añadida',
256256+ 'to_0' => 'Eliminar etiqueta «added»',
257257+ 'to_0_done' => 'Etiqueta «added» eliminada',
258258+ 'to_1' => 'Añadir etiqueta «added»',
259259+ 'to_1_done' => 'Etiqueta «added» añadida',
260260 ],
261261262262 'issue_tag_assigned' => [
263263- 'to_0' => 'Eliminar etiqueta «asignado»',
264264- 'to_0_done' => 'Etiqueta «asignado» eliminada',
265265- 'to_1' => 'Añadir etiqueta «asignado»',
266266- 'to_1_done' => 'Etiqueta «asignado» añadida',
263263+ 'to_0' => 'Eliminar etiqueta «assigned»',
264264+ 'to_0_done' => 'Etiqueta «assigned» eliminada',
265265+ 'to_1' => 'Añadir etiqueta «assigned»',
266266+ 'to_1_done' => 'Etiqueta «assigned» añadida',
267267 ],
268268269269 'issue_tag_confirmed' => [
270270- 'to_0' => 'Eliminar etiqueta «confirmado»',
271271- 'to_0_done' => 'Etiqueta «confirmado» eliminada',
272272- 'to_1' => 'Añadir etiqueta «confirmado»',
273273- 'to_1_done' => 'Etiqueta «confirmado» añadida',
270270+ 'to_0' => 'Eliminar etiqueta «confirmed»',
271271+ 'to_0_done' => 'Etiqueta «confirmed» eliminada',
272272+ 'to_1' => 'Añadir etiqueta «confirmed»',
273273+ 'to_1_done' => 'Etiqueta «confirmed» añadida',
274274 ],
275275276276 'issue_tag_duplicate' => [
277277- 'to_0' => 'Eliminar etiqueta «duplicado»',
278278- 'to_0_done' => 'Etiqueta «duplicado» eliminada',
279279- 'to_1' => 'Añadir etiqueta «duplicado»',
280280- 'to_1_done' => 'Etiqueta «duplicado» añadida',
277277+ 'to_0' => 'Eliminar etiqueta «duplicate»',
278278+ 'to_0_done' => 'Etiqueta «duplicate» eliminada',
279279+ 'to_1' => 'Añadir etiqueta «duplicate»',
280280+ 'to_1_done' => 'Etiqueta «duplicate» añadida',
281281 ],
282282283283 'issue_tag_invalid' => [
284284- 'to_0' => 'Eliminar etiqueta «inválido»',
285285- 'to_0_done' => 'Etiqueta «inválido» eliminada',
286286- 'to_1' => 'Añadir etiqueta «inválido»',
287287- 'to_1_done' => 'Etiqueta «inválido» añadida',
284284+ 'to_0' => 'Eliminar etiqueta «invalid»',
285285+ 'to_0_done' => 'Etiqueta «invalid» eliminada',
286286+ 'to_1' => 'Añadir etiqueta «invalid»',
287287+ 'to_1_done' => 'Etiqueta «invalid» añadida',
288288 ],
289289290290 'issue_tag_resolved' => [
291291- 'to_0' => 'Eliminar etiqueta «resuelto»',
292292- 'to_0_done' => 'Etiqueta «resuelto» eliminada',
293293- 'to_1' => 'Añadir etiqueta «resuelto»',
294294- 'to_1_done' => 'Etiqueta «resuelto» añadida',
291291+ 'to_0' => 'Eliminar etiqueta «resolved»',
292292+ 'to_0_done' => 'Etiqueta «resolved» eliminada',
293293+ 'to_1' => 'Añadir etiqueta «resolved»',
294294+ 'to_1_done' => 'Etiqueta «resolved» añadida',
295295 ],
296296297297 'lock' => [
···371371 'to_not_watching' => 'No marcado',
372372 'to_watching' => 'Marcado',
373373 'to_watching_mail' => 'Marcado con aviso de notificaciones',
374374- 'tooltip_mail_disable' => 'Notificación activada. Haga clic para desactivar',
375375- 'tooltip_mail_enable' => 'Notificación desactivada. Haga clic para activar',
374374+ 'tooltip_mail_disable' => 'Las notificaciones están activadas. Haz clic para desactivarlas',
375375+ 'tooltip_mail_enable' => 'Las notificaciones están desactivadas. Haz clic para activarlas',
376376 ],
377377 ],
378378];
+1-1
resources/lang/es/layout.php
···185185186186 'register' => [
187187 'download' => 'Descargar',
188188- 'info' => '¡Descargue osu! para crear su propia cuenta!',
188188+ 'info' => '¡Descarga osu! para crear tu propia cuenta!',
189189 'title' => "¿No tienes una cuenta?",
190190 ],
191191 ],
+2-2
resources/lang/es/livestreams.php
···5566return [
77 'promote' => [
88- 'pin' => '¿Seguro que desea promocionar esta transmisión en vivo?',
88+ 'pin' => '¿Seguro que deseas promocionar esta transmisión en vivo?',
99 'unpin' => "¿Seguro que quieres quitar la promoción de esta transmisión en vivo?",
1010 ],
11111212 'top-headers' => [
1313 'headline' => 'Transmisiones en vivo',
1414- 'description' => 'Los datos son obtenidos de twitch.tv cada cinco minutos basados en el listado del directorio. ¡Siéntase libre de empezar a transmitir y de aparecer en la lista! Para obtener más información sobre cómo empezar a transmitir, revise :link.',
1414+ 'description' => 'Los datos son obtenidos de twitch.tv cada cinco minutos basados en el listado del directorio. ¡Siéntete libre de empezar a transmitir y de aparecer en la lista! Para obtener más información sobre cómo empezar a transmitir, revisa :link.',
15151616 'link' => 'la página de la wiki de transmisiones en vivo',
1717 ],
+3-3
resources/lang/es/models.php
···44// See the LICENCE file in the repository root for full licence text.
5566return [
77- 'not_found' => "",
77+ 'not_found' => "No se ha podido encontrar :model especificado.",
8899 'name' => [
1010- 'App\Models\Beatmap' => '',
1111- 'App\Models\Beatmapset' => '',
1010+ 'App\Models\Beatmap' => 'la dificultad del mapa',
1111+ 'App\Models\Beatmapset' => 'el mapa',
1212 ],
1313];
···10101111 'avatar' => [
1212 'title' => 'Avatar',
1313- 'rules' => 'Veuillez vous assurer que votre avatar correspond aux :link.<br/>Cela signifie qu\'il doit être <strong>adapté à tous les âges</strong>. c\'est-à-dire pas de nudité, de profanation ou de contenu suggestif.',
1414- 'rules_link' => 'règles de la communauté',
1313+ 'rules' => 'Veuillez vous assurer que votre avatar correspond aux :link.<br/>Cela signifie qu\'il doit être <strong>adapté à tous les âges</strong>. C\'est-à-dire pas de nudité, de profanation ou de contenu suggestif.',
1414+ 'rules_link' => 'Considérations relatives au contenu visuel',
1515 ],
16161717 'email' => [
+3-3
resources/lang/fr/models.php
···44// See the LICENCE file in the repository root for full licence text.
5566return [
77- 'not_found' => "",
77+ 'not_found' => "La :model spécifiée n'a pas pu être trouvée.",
8899 'name' => [
1010- 'App\Models\Beatmap' => '',
1111- 'App\Models\Beatmapset' => '',
1010+ 'App\Models\Beatmap' => 'difficulté',
1111+ 'App\Models\Beatmapset' => 'beatmap',
1212 ],
1313];
···44// See the LICENCE file in the repository root for full licence text.
5566return [
77- 'not_found' => "",
77+ 'not_found' => ":model specificat nu a putut fi găsit(ă).",
8899 'name' => [
1010- 'App\Models\Beatmap' => '',
1111- 'App\Models\Beatmapset' => '',
1010+ 'App\Models\Beatmap' => 'Dificultatea beatmap-ului',
1111+ 'App\Models\Beatmapset' => 'Beatmap-ul',
1212 ],
1313];
+2-2
resources/lang/ru/accounts.php
···10101111 'avatar' => [
1212 'title' => 'Аватар',
1313- 'rules' => 'Пожалуйста, убедитесь, что ваш аватар соответствует :link.<br/>Это означает, что он обязан <strong>подходить для всех возрастов</strong>, т.е. не должен содержать наготы, ненормативной лексики или вызывающего контента.',
1414- 'rules_link' => 'правилам сообщества',
1313+ 'rules' => 'Убедитесь, что ваш аватар соответствует :link.<br/>Это означает, что он обязан <strong>подходить для всех возрастов</strong>, т.е. не должен содержать наготы, ненормативной лексики или вызывающего контента.',
1414+ 'rules_link' => 'критериям визуального содержания',
1515 ],
16161717 'email' => [
+3-3
resources/lang/ru/models.php
···44// See the LICENCE file in the repository root for full licence text.
5566return [
77- 'not_found' => "",
77+ 'not_found' => "Указанная :model не найдена.",
8899 'name' => [
1010- 'App\Models\Beatmap' => '',
1111- 'App\Models\Beatmapset' => '',
1010+ 'App\Models\Beatmap' => 'сложность карты',
1111+ 'App\Models\Beatmapset' => 'карта',
1212 ],
1313];
+1-1
resources/lang/sr/accounts.php
···2020 'title' => 'Имејл',
2121 'locked' => [
2222 '_' => 'Molimo kontaktirajte :accounts ukoliko treba da ažurirate Vašu imejl adresu.',
2323- 'accounts' => 'tim za podršku naloga',
2323+ 'accounts' => 'тим за подршку налога',
2424 ],
2525 ],
2626
+3-3
resources/lang/vi/models.php
···44// See the LICENCE file in the repository root for full licence text.
5566return [
77- 'not_found' => "",
77+ 'not_found' => "Không thể tìm thấy :model được chỉ định.",
8899 'name' => [
1010- 'App\Models\Beatmap' => '',
1111- 'App\Models\Beatmapset' => '',
1010+ 'App\Models\Beatmap' => 'độ khó beatmap',
1111+ 'App\Models\Beatmapset' => 'beatmap',
1212 ],
1313];
+3-3
resources/lang/zh-tw/models.php
···44// See the LICENCE file in the repository root for full licence text.
5566return [
77- 'not_found' => "",
77+ 'not_found' => "找不到指定的 :model。",
8899 'name' => [
1010- 'App\Models\Beatmap' => '',
1111- 'App\Models\Beatmapset' => '',
1010+ 'App\Models\Beatmap' => '圖譜難度',
1111+ 'App\Models\Beatmapset' => '圖譜',
1212 ],
1313];
+3-3
resources/lang/zh/models.php
···44// See the LICENCE file in the repository root for full licence text.
5566return [
77- 'not_found' => "",
77+ 'not_found' => "无法找到指定的 :model。",
8899 'name' => [
1010- 'App\Models\Beatmap' => '',
1111- 'App\Models\Beatmapset' => '',
1010+ 'App\Models\Beatmap' => '谱面难度',
1111+ 'App\Models\Beatmapset' => '谱面',
1212 ],
1313];
···33 See the LICENCE file in the repository root for full licence text.
44--}}
55{{--
66- we're explicitly avoiding NoCaptcha::renderJs here in order to use recaptcha.net instead of google.com (as the latter is blocked in mainland china)
77- see: https://developers.google.com/recaptcha/docs/faq#can-i-use-recaptcha-globally
66+ use turbolinks initialiser
87--}}
98<script>
1010- osuCore.turbolinksReload.load('https://www.recaptcha.net/recaptcha/api.js?render=explicit&onload=initCaptcha&hl={{Lang::getLocale()}}');
1111- function initCaptcha() { osuCore.captcha.init('{{$GLOBALS['cfg']['captcha']['sitekey']}}'); }
99+ osuCore.turbolinksReload.load('https://challenges.cloudflare.com/turnstile/v0/api.js?render=explicit&onload=initCaptcha');
1010+ function initCaptcha() { osuCore.captcha.init('{{ $GLOBALS['cfg']['turnstile']['site_key'] }}'); }
1211</script>