+
+
+
+
+
+ {{ $t("game_modes.form.delete_confirm_title", { name: gameMode?.name }) }}
+
+
+ {{ $t("game_modes.form.delete_confirm_description") }}
+
+
+
+ {{ $t("common.cancel") }}
+
+ {{ $t("game_modes.form.delete") }}
+
+
+
+
@@ -201,7 +269,8 @@ export default {
data() {
return {
submitting: false,
- archiving: false,
+ deleting: false,
+ confirmDelete: false,
selected: [] as Array,
availablePlugins: [] as Array>,
alwaysLoad: [] as Array,
@@ -216,6 +285,7 @@ export default {
"lowercase letters, numbers and dashes only",
),
description: z.string().optional().default(""),
+ enabled: z.boolean().default(true),
competitive_safe: z.boolean().default(false),
cfg: z.string().optional().default(""),
extra_game_params: z.string().optional().default(""),
@@ -267,6 +337,7 @@ export default {
name: mode.name,
slug: mode.slug,
description: mode.description ?? "",
+ enabled: mode.enabled,
competitive_safe: mode.competitive_safe,
cfg: mode.cfg ?? "",
extra_game_params: mode.extra_game_params ?? "",
@@ -285,6 +356,11 @@ export default {
},
},
computed: {
+ // Whether any match has run this mode; the parent's query carries one
+ // referencing match_options row as the answer.
+ usedByMatches(): boolean {
+ return (this.gameMode?.match_options?.length ?? 0) > 0;
+ },
// A plugin set to load on every match is already on every server. Listing
// it here reads as a choice, and unticking it would not stop it loading.
selectablePlugins(): Array> {
@@ -323,6 +399,7 @@ export default {
name: values.name,
slug: values.slug,
description: values.description || null,
+ ...(this.gameMode?.archived_at ? {} : { enabled: values.enabled }),
competitive_safe: values.competitive_safe,
cfg: values.cfg || null,
extra_game_params: values.extra_game_params || null,
@@ -397,27 +474,79 @@ export default {
}),
});
},
- async archive() {
- if (this.archiving) {
+ // Archived is the one pair of columns both Restore and the used-mode
+ // Delete flip; an archived mode is disabled by definition.
+ async setArchived(archived: boolean) {
+ await (this as any).$apollo.mutate({
+ mutation: generateMutation({
+ update_game_modes_by_pk: [
+ {
+ pk_columns: { id: this.gameMode.id },
+ _set: archived
+ ? { archived_at: new Date().toISOString(), enabled: false }
+ : { archived_at: null, enabled: true },
+ },
+ { id: true },
+ ],
+ }),
+ });
+ },
+ async restore() {
+ if (this.deleting) {
return;
}
- this.archiving = true;
+ this.deleting = true;
try {
- await (this as any).$apollo.mutate({
- mutation: generateMutation({
- update_game_modes_by_pk: [
- {
- pk_columns: { id: this.gameMode.id },
- _set: { archived_at: new Date().toISOString(), enabled: false },
- },
- { id: true },
- ],
- }),
+ await this.setArchived(false);
+
+ toast({ title: this.$t("game_modes.form.restored") as string });
+ this.$emit("saved", this.gameMode.id);
+ } catch (error) {
+ toast({
+ title: (error as Error).message,
+ variant: "destructive",
});
+ } finally {
+ this.deleting = false;
+ }
+ },
+ // tbd_game_modes refuses to delete a mode any match has used, because the
+ // finished match still points at it. Decided here from the match count the
+ // row carries rather than by trying the delete and reading the trigger's
+ // message: the global apollo error hook toasts every rejected mutation, so
+ // the attempt would surface as a red database error before the fallback.
+ // A used mode is archived instead: gone from every picker, history intact,
+ // restorable from here.
+ async remove() {
+ if (this.deleting) {
+ return;
+ }
+
+ this.deleting = true;
+
+ try {
+ if (this.usedByMatches) {
+ await this.setArchived(true);
+ toast({
+ title: this.$t("game_modes.form.archived") as string,
+ description: this.$t(
+ "game_modes.form.archived_instead",
+ ) as string,
+ });
+ } else {
+ await (this as any).$apollo.mutate({
+ mutation: generateMutation({
+ delete_game_modes_by_pk: [
+ { id: this.gameMode.id },
+ { id: true },
+ ],
+ }),
+ });
+ toast({ title: this.$t("game_modes.form.deleted") as string });
+ }
- toast({ title: this.$t("game_modes.form.archived") as string });
this.$emit("saved", null);
} catch (error) {
toast({
@@ -425,7 +554,7 @@ export default {
variant: "destructive",
});
} finally {
- this.archiving = false;
+ this.deleting = false;
}
},
},
diff --git a/components/map-pools/MapForm.vue b/components/map-pools/MapForm.vue
index 8bdb129f4..d07d48430 100644
--- a/components/map-pools/MapForm.vue
+++ b/components/map-pools/MapForm.vue
@@ -1,5 +1,5 @@
-
+
diff --git a/generated/zeus/const.ts b/generated/zeus/const.ts
index b411319ce..25a3f14f3 100644
--- a/generated/zeus/const.ts
+++ b/generated/zeus/const.ts
@@ -6589,6 +6589,7 @@ export const AllTypesProps: Record = {
id:"uuid_comparison_exp",
installed_at:"timestamptz_comparison_exp",
last_error:"String_comparison_exp",
+ path:"String_comparison_exp",
plugin:"game_plugins_bool_exp",
plugin_slug:"String_comparison_exp",
runtime:"e_plugin_runtimes_enum_comparison_exp",
@@ -6616,6 +6617,7 @@ export const AllTypesProps: Record = {
id:"order_by",
installed_at:"order_by",
last_error:"order_by",
+ path:"order_by",
plugin_slug:"order_by",
source:"order_by",
updated_at:"order_by",
@@ -6628,6 +6630,7 @@ export const AllTypesProps: Record = {
id:"order_by",
installed_at:"order_by",
last_error:"order_by",
+ path:"order_by",
plugin_slug:"order_by",
source:"order_by",
updated_at:"order_by",
@@ -6648,6 +6651,7 @@ export const AllTypesProps: Record = {
id:"order_by",
installed_at:"order_by",
last_error:"order_by",
+ path:"order_by",
plugin:"game_plugins_order_by",
plugin_slug:"order_by",
runtime:"order_by",
@@ -9455,6 +9459,7 @@ export const AllTypesProps: Record = {
_not:"maps_bool_exp",
_or:"maps_bool_exp",
active_pool:"Boolean_comparison_exp",
+ deleted_at:"timestamptz_comparison_exp",
e_match_type:"e_match_types_bool_exp",
enabled:"Boolean_comparison_exp",
id:"uuid_comparison_exp",
@@ -9471,6 +9476,7 @@ export const AllTypesProps: Record = {
},
maps_constraint: "enum" as const,
maps_insert_input:{
+ deleted_at:"timestamptz",
e_match_type:"e_match_types_obj_rel_insert_input",
id:"uuid",
match_maps:"match_maps_arr_rel_insert_input",
@@ -9478,6 +9484,7 @@ export const AllTypesProps: Record = {
type:"e_match_types_enum"
},
maps_max_order_by:{
+ deleted_at:"order_by",
id:"order_by",
label:"order_by",
name:"order_by",
@@ -9486,6 +9493,7 @@ export const AllTypesProps: Record = {
workshop_map_id:"order_by"
},
maps_min_order_by:{
+ deleted_at:"order_by",
id:"order_by",
label:"order_by",
name:"order_by",
@@ -9504,6 +9512,7 @@ export const AllTypesProps: Record = {
},
maps_order_by:{
active_pool:"order_by",
+ deleted_at:"order_by",
e_match_type:"e_match_types_order_by",
enabled:"order_by",
id:"order_by",
@@ -9523,6 +9532,7 @@ export const AllTypesProps: Record = {
maps_select_column_maps_aggregate_bool_exp_bool_and_arguments_columns: "enum" as const,
maps_select_column_maps_aggregate_bool_exp_bool_or_arguments_columns: "enum" as const,
maps_set_input:{
+ deleted_at:"timestamptz",
id:"uuid",
type:"e_match_types_enum"
},
@@ -9531,6 +9541,7 @@ export const AllTypesProps: Record = {
ordering:"cursor_ordering"
},
maps_stream_cursor_value_input:{
+ deleted_at:"timestamptz",
id:"uuid",
type:"e_match_types_enum"
},
@@ -43424,6 +43435,7 @@ export const ReturnTypes: Record = {
id:"uuid",
installed_at:"timestamptz",
last_error:"String",
+ path:"String",
plugin:"game_plugins",
plugin_slug:"String",
runtime:"e_plugin_runtimes_enum",
@@ -43448,6 +43460,7 @@ export const ReturnTypes: Record = {
id:"uuid",
installed_at:"timestamptz",
last_error:"String",
+ path:"String",
plugin_slug:"String",
source:"String",
updated_at:"timestamptz",
@@ -43460,6 +43473,7 @@ export const ReturnTypes: Record = {
id:"uuid",
installed_at:"timestamptz",
last_error:"String",
+ path:"String",
plugin_slug:"String",
source:"String",
updated_at:"timestamptz",
@@ -45013,6 +45027,7 @@ export const ReturnTypes: Record = {
},
maps:{
active_pool:"Boolean",
+ deleted_at:"timestamptz",
e_match_type:"e_match_types",
enabled:"Boolean",
id:"uuid",
@@ -45037,6 +45052,7 @@ export const ReturnTypes: Record = {
min:"maps_min_fields"
},
maps_max_fields:{
+ deleted_at:"timestamptz",
id:"uuid",
label:"String",
name:"String",
@@ -45045,6 +45061,7 @@ export const ReturnTypes: Record = {
workshop_map_id:"String"
},
maps_min_fields:{
+ deleted_at:"timestamptz",
id:"uuid",
label:"String",
name:"String",
diff --git a/generated/zeus/index.ts b/generated/zeus/index.ts
index 7a6040ce9..ce468e679 100644
--- a/generated/zeus/index.ts
+++ b/generated/zeus/index.ts
@@ -14834,6 +14834,7 @@ count?: [{ columns?: Array | undefined
id?:boolean | `@${string}`,
installed_at?:boolean | `@${string}`,
last_error?:boolean | `@${string}`,
+ path?:boolean | `@${string}`,
/** An object relationship */
plugin?:ValueTypes["game_plugins"],
plugin_slug?:boolean | `@${string}`,
@@ -14906,6 +14907,7 @@ count?: [{ columns?: Array
id?: ValueTypes["uuid_comparison_exp"] | undefined | null | Variable,
installed_at?: ValueTypes["timestamptz_comparison_exp"] | undefined | null | Variable,
last_error?: ValueTypes["String_comparison_exp"] | undefined | null | Variable,
+ path?: ValueTypes["String_comparison_exp"] | undefined | null | Variable,
plugin?: ValueTypes["game_plugins_bool_exp"] | undefined | null | Variable,
plugin_slug?: ValueTypes["String_comparison_exp"] | undefined | null | Variable,
runtime?: ValueTypes["e_plugin_runtimes_enum_comparison_exp"] | undefined | null | Variable,
@@ -14927,6 +14929,7 @@ count?: [{ columns?: Array
id?: ValueTypes["uuid"] | undefined | null | Variable,
installed_at?: ValueTypes["timestamptz"] | undefined | null | Variable,
last_error?: string | undefined | null | Variable,
+ path?: string | undefined | null | Variable,
plugin?: ValueTypes["game_plugins_obj_rel_insert_input"] | undefined | null | Variable,
plugin_slug?: string | undefined | null | Variable,
runtime?: ValueTypes["e_plugin_runtimes_enum"] | undefined | null | Variable,
@@ -14943,6 +14946,7 @@ count?: [{ columns?: Array
id?:boolean | `@${string}`,
installed_at?:boolean | `@${string}`,
last_error?:boolean | `@${string}`,
+ path?:boolean | `@${string}`,
plugin_slug?:boolean | `@${string}`,
source?:boolean | `@${string}`,
updated_at?:boolean | `@${string}`,
@@ -14957,6 +14961,7 @@ count?: [{ columns?: Array
id?: ValueTypes["order_by"] | undefined | null | Variable,
installed_at?: ValueTypes["order_by"] | undefined | null | Variable,
last_error?: ValueTypes["order_by"] | undefined | null | Variable,
+ path?: ValueTypes["order_by"] | undefined | null | Variable,
plugin_slug?: ValueTypes["order_by"] | undefined | null | Variable,
source?: ValueTypes["order_by"] | undefined | null | Variable,
updated_at?: ValueTypes["order_by"] | undefined | null | Variable,
@@ -14970,6 +14975,7 @@ count?: [{ columns?: Array
id?:boolean | `@${string}`,
installed_at?:boolean | `@${string}`,
last_error?:boolean | `@${string}`,
+ path?:boolean | `@${string}`,
plugin_slug?:boolean | `@${string}`,
source?:boolean | `@${string}`,
updated_at?:boolean | `@${string}`,
@@ -14984,6 +14990,7 @@ count?: [{ columns?: Array
id?: ValueTypes["order_by"] | undefined | null | Variable,
installed_at?: ValueTypes["order_by"] | undefined | null | Variable,
last_error?: ValueTypes["order_by"] | undefined | null | Variable,
+ path?: ValueTypes["order_by"] | undefined | null | Variable,
plugin_slug?: ValueTypes["order_by"] | undefined | null | Variable,
source?: ValueTypes["order_by"] | undefined | null | Variable,
updated_at?: ValueTypes["order_by"] | undefined | null | Variable,
@@ -15014,6 +15021,7 @@ count?: [{ columns?: Array
id?: ValueTypes["order_by"] | undefined | null | Variable,
installed_at?: ValueTypes["order_by"] | undefined | null | Variable,
last_error?: ValueTypes["order_by"] | undefined | null | Variable,
+ path?: ValueTypes["order_by"] | undefined | null | Variable,
plugin?: ValueTypes["game_plugins_order_by"] | undefined | null | Variable,
plugin_slug?: ValueTypes["order_by"] | undefined | null | Variable,
runtime?: ValueTypes["order_by"] | undefined | null | Variable,
@@ -15042,6 +15050,7 @@ count?: [{ columns?: Array
id?: ValueTypes["uuid"] | undefined | null | Variable,
installed_at?: ValueTypes["timestamptz"] | undefined | null | Variable,
last_error?: string | undefined | null | Variable,
+ path?: string | undefined | null | Variable,
plugin_slug?: string | undefined | null | Variable,
runtime?: ValueTypes["e_plugin_runtimes_enum"] | undefined | null | Variable,
source?: string | undefined | null | Variable,
@@ -15066,6 +15075,7 @@ count?: [{ columns?: Array
id?: ValueTypes["uuid"] | undefined | null | Variable,
installed_at?: ValueTypes["timestamptz"] | undefined | null | Variable,
last_error?: string | undefined | null | Variable,
+ path?: string | undefined | null | Variable,
plugin_slug?: string | undefined | null | Variable,
runtime?: ValueTypes["e_plugin_runtimes_enum"] | undefined | null | Variable,
source?: string | undefined | null | Variable,
@@ -20465,6 +20475,7 @@ count?: [{ columns?: Array | undefined |
/** columns and relationships of "maps" */
["maps"]: AliasType<{
active_pool?:boolean | `@${string}`,
+ deleted_at?:boolean | `@${string}`,
/** An object relationship */
e_match_type?:ValueTypes["e_match_types"],
enabled?:boolean | `@${string}`,
@@ -20555,6 +20566,7 @@ count?: [{ columns?: Array | undefined | null
_not?: ValueTypes["maps_bool_exp"] | undefined | null | Variable,
_or?: Array | undefined | null | Variable,
active_pool?: ValueTypes["Boolean_comparison_exp"] | undefined | null | Variable,
+ deleted_at?: ValueTypes["timestamptz_comparison_exp"] | undefined | null | Variable,
e_match_type?: ValueTypes["e_match_types_bool_exp"] | undefined | null | Variable,
enabled?: ValueTypes["Boolean_comparison_exp"] | undefined | null | Variable,
id?: ValueTypes["uuid_comparison_exp"] | undefined | null | Variable,
@@ -20574,6 +20586,7 @@ count?: [{ columns?: Array | undefined | null
/** input type for inserting data into table "maps" */
["maps_insert_input"]: {
active_pool?: boolean | undefined | null | Variable,
+ deleted_at?: ValueTypes["timestamptz"] | undefined | null | Variable,
e_match_type?: ValueTypes["e_match_types_obj_rel_insert_input"] | undefined | null | Variable,
enabled?: boolean | undefined | null | Variable,
id?: ValueTypes["uuid"] | undefined | null | Variable,
@@ -20588,6 +20601,7 @@ count?: [{ columns?: Array | undefined | null
};
/** aggregate max on columns */
["maps_max_fields"]: AliasType<{
+ deleted_at?:boolean | `@${string}`,
id?:boolean | `@${string}`,
label?:boolean | `@${string}`,
name?:boolean | `@${string}`,
@@ -20598,6 +20612,7 @@ count?: [{ columns?: Array | undefined | null
}>;
/** order by max() on columns of table "maps" */
["maps_max_order_by"]: {
+ deleted_at?: ValueTypes["order_by"] | undefined | null | Variable,
id?: ValueTypes["order_by"] | undefined | null | Variable,
label?: ValueTypes["order_by"] | undefined | null | Variable,
name?: ValueTypes["order_by"] | undefined | null | Variable,
@@ -20607,6 +20622,7 @@ count?: [{ columns?: Array | undefined | null
};
/** aggregate min on columns */
["maps_min_fields"]: AliasType<{
+ deleted_at?:boolean | `@${string}`,
id?:boolean | `@${string}`,
label?:boolean | `@${string}`,
name?:boolean | `@${string}`,
@@ -20617,6 +20633,7 @@ count?: [{ columns?: Array | undefined | null
}>;
/** order by min() on columns of table "maps" */
["maps_min_order_by"]: {
+ deleted_at?: ValueTypes["order_by"] | undefined | null | Variable,
id?: ValueTypes["order_by"] | undefined | null | Variable,
label?: ValueTypes["order_by"] | undefined | null | Variable,
name?: ValueTypes["order_by"] | undefined | null | Variable,
@@ -20647,6 +20664,7 @@ count?: [{ columns?: Array | undefined | null
/** Ordering options when selecting data from "maps". */
["maps_order_by"]: {
active_pool?: ValueTypes["order_by"] | undefined | null | Variable,
+ deleted_at?: ValueTypes["order_by"] | undefined | null | Variable,
e_match_type?: ValueTypes["e_match_types_order_by"] | undefined | null | Variable,
enabled?: ValueTypes["order_by"] | undefined | null | Variable,
id?: ValueTypes["order_by"] | undefined | null | Variable,
@@ -20672,6 +20690,7 @@ count?: [{ columns?: Array | undefined | null
/** input type for updating data in table "maps" */
["maps_set_input"]: {
active_pool?: boolean | undefined | null | Variable,
+ deleted_at?: ValueTypes["timestamptz"] | undefined | null | Variable,
enabled?: boolean | undefined | null | Variable,
id?: ValueTypes["uuid"] | undefined | null | Variable,
label?: string | undefined | null | Variable,
@@ -20691,6 +20710,7 @@ count?: [{ columns?: Array | undefined | null
/** Initial value of the column from where the streaming should start */
["maps_stream_cursor_value_input"]: {
active_pool?: boolean | undefined | null | Variable,
+ deleted_at?: ValueTypes["timestamptz"] | undefined | null | Variable,
enabled?: boolean | undefined | null | Variable,
id?: ValueTypes["uuid"] | undefined | null | Variable,
label?: string | undefined | null | Variable,
@@ -83968,6 +83988,7 @@ count?: [{ columns?: Array | u
id?:boolean | `@${string}`,
installed_at?:boolean | `@${string}`,
last_error?:boolean | `@${string}`,
+ path?:boolean | `@${string}`,
/** An object relationship */
plugin?:ResolverInputTypes["game_plugins"],
plugin_slug?:boolean | `@${string}`,
@@ -84040,6 +84061,7 @@ count?: [{ columns?: Array | unde
/** columns and relationships of "maps" */
["maps"]: AliasType<{
active_pool?:boolean | `@${string}`,
+ deleted_at?:boolean | `@${string}`,
/** An object relationship */
e_match_type?:ResolverInputTypes["e_match_types"],
enabled?:boolean | `@${string}`,
@@ -89689,6 +89720,7 @@ count?: [{ columns?: Array | undefined
_not?: ResolverInputTypes["maps_bool_exp"] | undefined | null,
_or?: Array | undefined | null,
active_pool?: ResolverInputTypes["Boolean_comparison_exp"] | undefined | null,
+ deleted_at?: ResolverInputTypes["timestamptz_comparison_exp"] | undefined | null,
e_match_type?: ResolverInputTypes["e_match_types_bool_exp"] | undefined | null,
enabled?: ResolverInputTypes["Boolean_comparison_exp"] | undefined | null,
id?: ResolverInputTypes["uuid_comparison_exp"] | undefined | null,
@@ -89708,6 +89740,7 @@ count?: [{ columns?: Array | undefined
/** input type for inserting data into table "maps" */
["maps_insert_input"]: {
active_pool?: boolean | undefined | null,
+ deleted_at?: ResolverInputTypes["timestamptz"] | undefined | null,
e_match_type?: ResolverInputTypes["e_match_types_obj_rel_insert_input"] | undefined | null,
enabled?: boolean | undefined | null,
id?: ResolverInputTypes["uuid"] | undefined | null,
@@ -89722,6 +89755,7 @@ count?: [{ columns?: Array | undefined
};
/** aggregate max on columns */
["maps_max_fields"]: AliasType<{
+ deleted_at?:boolean | `@${string}`,
id?:boolean | `@${string}`,
label?:boolean | `@${string}`,
name?:boolean | `@${string}`,
@@ -89732,6 +89766,7 @@ count?: [{ columns?: Array | undefined
}>;
/** order by max() on columns of table "maps" */
["maps_max_order_by"]: {
+ deleted_at?: ResolverInputTypes["order_by"] | undefined | null,
id?: ResolverInputTypes["order_by"] | undefined | null,
label?: ResolverInputTypes["order_by"] | undefined | null,
name?: ResolverInputTypes["order_by"] | undefined | null,
@@ -89741,6 +89776,7 @@ count?: [{ columns?: Array | undefined
};
/** aggregate min on columns */
["maps_min_fields"]: AliasType<{
+ deleted_at?:boolean | `@${string}`,
id?:boolean | `@${string}`,
label?:boolean | `@${string}`,
name?:boolean | `@${string}`,
@@ -89751,6 +89787,7 @@ count?: [{ columns?: Array | undefined
}>;
/** order by min() on columns of table "maps" */
["maps_min_order_by"]: {
+ deleted_at?: ResolverInputTypes["order_by"] | undefined | null,
id?: ResolverInputTypes["order_by"] | undefined | null,
label?: ResolverInputTypes["order_by"] | undefined | null,
name?: ResolverInputTypes["order_by"] | undefined | null,
@@ -89781,6 +89818,7 @@ count?: [{ columns?: Array | undefined
/** Ordering options when selecting data from "maps". */
["maps_order_by"]: {
active_pool?: ResolverInputTypes["order_by"] | undefined | null,
+ deleted_at?: ResolverInputTypes["order_by"] | undefined | null,
e_match_type?: ResolverInputTypes["e_match_types_order_by"] | undefined | null,
enabled?: ResolverInputTypes["order_by"] | undefined | null,
id?: ResolverInputTypes["order_by"] | undefined | null,
@@ -89806,6 +89844,7 @@ count?: [{ columns?: Array | undefined
/** input type for updating data in table "maps" */
["maps_set_input"]: {
active_pool?: boolean | undefined | null,
+ deleted_at?: ResolverInputTypes["timestamptz"] | undefined | null,
enabled?: boolean | undefined | null,
id?: ResolverInputTypes["uuid"] | undefined | null,
label?: string | undefined | null,
@@ -89825,6 +89864,7 @@ count?: [{ columns?: Array | undefined
/** Initial value of the column from where the streaming should start */
["maps_stream_cursor_value_input"]: {
active_pool?: boolean | undefined | null,
+ deleted_at?: ResolverInputTypes["timestamptz"] | undefined | null,
enabled?: boolean | undefined | null,
id?: ResolverInputTypes["uuid"] | undefined | null,
label?: string | undefined | null,
@@ -151852,6 +151892,7 @@ export type ModelTypes = {
id: ModelTypes["uuid"],
installed_at?: ModelTypes["timestamptz"] | undefined | null,
last_error?: string | undefined | null,
+ path?: string | undefined | null,
/** An object relationship */
plugin?: ModelTypes["game_plugins"] | undefined | null,
plugin_slug: string,
@@ -151921,6 +151962,7 @@ export type ModelTypes = {
id?: ModelTypes["uuid_comparison_exp"] | undefined | null,
installed_at?: ModelTypes["timestamptz_comparison_exp"] | undefined | null,
last_error?: ModelTypes["String_comparison_exp"] | undefined | null,
+ path?: ModelTypes["String_comparison_exp"] | undefined | null,
plugin?: ModelTypes["game_plugins_bool_exp"] | undefined | null,
plugin_slug?: ModelTypes["String_comparison_exp"] | undefined | null,
runtime?: ModelTypes["e_plugin_runtimes_enum_comparison_exp"] | undefined | null,
@@ -151941,6 +151983,7 @@ export type ModelTypes = {
id?: ModelTypes["uuid"] | undefined | null,
installed_at?: ModelTypes["timestamptz"] | undefined | null,
last_error?: string | undefined | null,
+ path?: string | undefined | null,
plugin?: ModelTypes["game_plugins_obj_rel_insert_input"] | undefined | null,
plugin_slug?: string | undefined | null,
runtime?: ModelTypes["e_plugin_runtimes_enum"] | undefined | null,
@@ -151957,6 +152000,7 @@ export type ModelTypes = {
id?: ModelTypes["uuid"] | undefined | null,
installed_at?: ModelTypes["timestamptz"] | undefined | null,
last_error?: string | undefined | null,
+ path?: string | undefined | null,
plugin_slug?: string | undefined | null,
source?: string | undefined | null,
updated_at?: ModelTypes["timestamptz"] | undefined | null,
@@ -151970,6 +152014,7 @@ export type ModelTypes = {
id?: ModelTypes["order_by"] | undefined | null,
installed_at?: ModelTypes["order_by"] | undefined | null,
last_error?: ModelTypes["order_by"] | undefined | null,
+ path?: ModelTypes["order_by"] | undefined | null,
plugin_slug?: ModelTypes["order_by"] | undefined | null,
source?: ModelTypes["order_by"] | undefined | null,
updated_at?: ModelTypes["order_by"] | undefined | null,
@@ -151983,6 +152028,7 @@ export type ModelTypes = {
id?: ModelTypes["uuid"] | undefined | null,
installed_at?: ModelTypes["timestamptz"] | undefined | null,
last_error?: string | undefined | null,
+ path?: string | undefined | null,
plugin_slug?: string | undefined | null,
source?: string | undefined | null,
updated_at?: ModelTypes["timestamptz"] | undefined | null,
@@ -151996,6 +152042,7 @@ export type ModelTypes = {
id?: ModelTypes["order_by"] | undefined | null,
installed_at?: ModelTypes["order_by"] | undefined | null,
last_error?: ModelTypes["order_by"] | undefined | null,
+ path?: ModelTypes["order_by"] | undefined | null,
plugin_slug?: ModelTypes["order_by"] | undefined | null,
source?: ModelTypes["order_by"] | undefined | null,
updated_at?: ModelTypes["order_by"] | undefined | null,
@@ -152025,6 +152072,7 @@ export type ModelTypes = {
id?: ModelTypes["order_by"] | undefined | null,
installed_at?: ModelTypes["order_by"] | undefined | null,
last_error?: ModelTypes["order_by"] | undefined | null,
+ path?: ModelTypes["order_by"] | undefined | null,
plugin?: ModelTypes["game_plugins_order_by"] | undefined | null,
plugin_slug?: ModelTypes["order_by"] | undefined | null,
runtime?: ModelTypes["order_by"] | undefined | null,
@@ -152050,6 +152098,7 @@ export type ModelTypes = {
id?: ModelTypes["uuid"] | undefined | null,
installed_at?: ModelTypes["timestamptz"] | undefined | null,
last_error?: string | undefined | null,
+ path?: string | undefined | null,
plugin_slug?: string | undefined | null,
runtime?: ModelTypes["e_plugin_runtimes_enum"] | undefined | null,
source?: string | undefined | null,
@@ -152074,6 +152123,7 @@ export type ModelTypes = {
id?: ModelTypes["uuid"] | undefined | null,
installed_at?: ModelTypes["timestamptz"] | undefined | null,
last_error?: string | undefined | null,
+ path?: string | undefined | null,
plugin_slug?: string | undefined | null,
runtime?: ModelTypes["e_plugin_runtimes_enum"] | undefined | null,
source?: string | undefined | null,
@@ -157062,6 +157112,7 @@ export type ModelTypes = {
/** columns and relationships of "maps" */
["maps"]: {
active_pool: boolean,
+ deleted_at?: ModelTypes["timestamptz"] | undefined | null,
/** An object relationship */
e_match_type: ModelTypes["e_match_types"],
enabled: boolean,
@@ -157133,6 +157184,7 @@ export type ModelTypes = {
_not?: ModelTypes["maps_bool_exp"] | undefined | null,
_or?: Array | undefined | null,
active_pool?: ModelTypes["Boolean_comparison_exp"] | undefined | null,
+ deleted_at?: ModelTypes["timestamptz_comparison_exp"] | undefined | null,
e_match_type?: ModelTypes["e_match_types_bool_exp"] | undefined | null,
enabled?: ModelTypes["Boolean_comparison_exp"] | undefined | null,
id?: ModelTypes["uuid_comparison_exp"] | undefined | null,
@@ -157151,6 +157203,7 @@ export type ModelTypes = {
/** input type for inserting data into table "maps" */
["maps_insert_input"]: {
active_pool?: boolean | undefined | null,
+ deleted_at?: ModelTypes["timestamptz"] | undefined | null,
e_match_type?: ModelTypes["e_match_types_obj_rel_insert_input"] | undefined | null,
enabled?: boolean | undefined | null,
id?: ModelTypes["uuid"] | undefined | null,
@@ -157165,7 +157218,8 @@ export type ModelTypes = {
};
/** aggregate max on columns */
["maps_max_fields"]: {
- id?: ModelTypes["uuid"] | undefined | null,
+ deleted_at?: ModelTypes["timestamptz"] | undefined | null,
+ id?: ModelTypes["uuid"] | undefined | null,
label?: string | undefined | null,
name?: string | undefined | null,
patch?: string | undefined | null,
@@ -157174,6 +157228,7 @@ export type ModelTypes = {
};
/** order by max() on columns of table "maps" */
["maps_max_order_by"]: {
+ deleted_at?: ModelTypes["order_by"] | undefined | null,
id?: ModelTypes["order_by"] | undefined | null,
label?: ModelTypes["order_by"] | undefined | null,
name?: ModelTypes["order_by"] | undefined | null,
@@ -157183,7 +157238,8 @@ export type ModelTypes = {
};
/** aggregate min on columns */
["maps_min_fields"]: {
- id?: ModelTypes["uuid"] | undefined | null,
+ deleted_at?: ModelTypes["timestamptz"] | undefined | null,
+ id?: ModelTypes["uuid"] | undefined | null,
label?: string | undefined | null,
name?: string | undefined | null,
patch?: string | undefined | null,
@@ -157192,6 +157248,7 @@ export type ModelTypes = {
};
/** order by min() on columns of table "maps" */
["maps_min_order_by"]: {
+ deleted_at?: ModelTypes["order_by"] | undefined | null,
id?: ModelTypes["order_by"] | undefined | null,
label?: ModelTypes["order_by"] | undefined | null,
name?: ModelTypes["order_by"] | undefined | null,
@@ -157221,6 +157278,7 @@ export type ModelTypes = {
/** Ordering options when selecting data from "maps". */
["maps_order_by"]: {
active_pool?: ModelTypes["order_by"] | undefined | null,
+ deleted_at?: ModelTypes["order_by"] | undefined | null,
e_match_type?: ModelTypes["e_match_types_order_by"] | undefined | null,
enabled?: ModelTypes["order_by"] | undefined | null,
id?: ModelTypes["order_by"] | undefined | null,
@@ -157243,6 +157301,7 @@ export type ModelTypes = {
/** input type for updating data in table "maps" */
["maps_set_input"]: {
active_pool?: boolean | undefined | null,
+ deleted_at?: ModelTypes["timestamptz"] | undefined | null,
enabled?: boolean | undefined | null,
id?: ModelTypes["uuid"] | undefined | null,
label?: string | undefined | null,
@@ -157262,6 +157321,7 @@ export type ModelTypes = {
/** Initial value of the column from where the streaming should start */
["maps_stream_cursor_value_input"]: {
active_pool?: boolean | undefined | null,
+ deleted_at?: ModelTypes["timestamptz"] | undefined | null,
enabled?: boolean | undefined | null,
id?: ModelTypes["uuid"] | undefined | null,
label?: string | undefined | null,
@@ -213535,6 +213595,7 @@ export type GraphQLTypes = {
id: GraphQLTypes["uuid"],
installed_at?: GraphQLTypes["timestamptz"] | undefined | null,
last_error?: string | undefined | null,
+ path?: string | undefined | null,
/** An object relationship */
plugin?: GraphQLTypes["game_plugins"] | undefined | null,
plugin_slug: string,
@@ -213606,6 +213667,7 @@ export type GraphQLTypes = {
id?: GraphQLTypes["uuid_comparison_exp"] | undefined | null,
installed_at?: GraphQLTypes["timestamptz_comparison_exp"] | undefined | null,
last_error?: GraphQLTypes["String_comparison_exp"] | undefined | null,
+ path?: GraphQLTypes["String_comparison_exp"] | undefined | null,
plugin?: GraphQLTypes["game_plugins_bool_exp"] | undefined | null,
plugin_slug?: GraphQLTypes["String_comparison_exp"] | undefined | null,
runtime?: GraphQLTypes["e_plugin_runtimes_enum_comparison_exp"] | undefined | null,
@@ -213627,6 +213689,7 @@ export type GraphQLTypes = {
id?: GraphQLTypes["uuid"] | undefined | null,
installed_at?: GraphQLTypes["timestamptz"] | undefined | null,
last_error?: string | undefined | null,
+ path?: string | undefined | null,
plugin?: GraphQLTypes["game_plugins_obj_rel_insert_input"] | undefined | null,
plugin_slug?: string | undefined | null,
runtime?: GraphQLTypes["e_plugin_runtimes_enum"] | undefined | null,
@@ -213644,6 +213707,7 @@ export type GraphQLTypes = {
id?: GraphQLTypes["uuid"] | undefined | null,
installed_at?: GraphQLTypes["timestamptz"] | undefined | null,
last_error?: string | undefined | null,
+ path?: string | undefined | null,
plugin_slug?: string | undefined | null,
source?: string | undefined | null,
updated_at?: GraphQLTypes["timestamptz"] | undefined | null,
@@ -213657,6 +213721,7 @@ export type GraphQLTypes = {
id?: GraphQLTypes["order_by"] | undefined | null,
installed_at?: GraphQLTypes["order_by"] | undefined | null,
last_error?: GraphQLTypes["order_by"] | undefined | null,
+ path?: GraphQLTypes["order_by"] | undefined | null,
plugin_slug?: GraphQLTypes["order_by"] | undefined | null,
source?: GraphQLTypes["order_by"] | undefined | null,
updated_at?: GraphQLTypes["order_by"] | undefined | null,
@@ -213671,6 +213736,7 @@ export type GraphQLTypes = {
id?: GraphQLTypes["uuid"] | undefined | null,
installed_at?: GraphQLTypes["timestamptz"] | undefined | null,
last_error?: string | undefined | null,
+ path?: string | undefined | null,
plugin_slug?: string | undefined | null,
source?: string | undefined | null,
updated_at?: GraphQLTypes["timestamptz"] | undefined | null,
@@ -213684,6 +213750,7 @@ export type GraphQLTypes = {
id?: GraphQLTypes["order_by"] | undefined | null,
installed_at?: GraphQLTypes["order_by"] | undefined | null,
last_error?: GraphQLTypes["order_by"] | undefined | null,
+ path?: GraphQLTypes["order_by"] | undefined | null,
plugin_slug?: GraphQLTypes["order_by"] | undefined | null,
source?: GraphQLTypes["order_by"] | undefined | null,
updated_at?: GraphQLTypes["order_by"] | undefined | null,
@@ -213714,6 +213781,7 @@ export type GraphQLTypes = {
id?: GraphQLTypes["order_by"] | undefined | null,
installed_at?: GraphQLTypes["order_by"] | undefined | null,
last_error?: GraphQLTypes["order_by"] | undefined | null,
+ path?: GraphQLTypes["order_by"] | undefined | null,
plugin?: GraphQLTypes["game_plugins_order_by"] | undefined | null,
plugin_slug?: GraphQLTypes["order_by"] | undefined | null,
runtime?: GraphQLTypes["order_by"] | undefined | null,
@@ -213742,6 +213810,7 @@ export type GraphQLTypes = {
id?: GraphQLTypes["uuid"] | undefined | null,
installed_at?: GraphQLTypes["timestamptz"] | undefined | null,
last_error?: string | undefined | null,
+ path?: string | undefined | null,
plugin_slug?: string | undefined | null,
runtime?: GraphQLTypes["e_plugin_runtimes_enum"] | undefined | null,
source?: string | undefined | null,
@@ -213766,6 +213835,7 @@ export type GraphQLTypes = {
id?: GraphQLTypes["uuid"] | undefined | null,
installed_at?: GraphQLTypes["timestamptz"] | undefined | null,
last_error?: string | undefined | null,
+ path?: string | undefined | null,
plugin_slug?: string | undefined | null,
runtime?: GraphQLTypes["e_plugin_runtimes_enum"] | undefined | null,
source?: string | undefined | null,
@@ -219015,6 +219085,7 @@ export type GraphQLTypes = {
["maps"]: {
__typename: "maps",
active_pool: boolean,
+ deleted_at?: GraphQLTypes["timestamptz"] | undefined | null,
/** An object relationship */
e_match_type: GraphQLTypes["e_match_types"],
enabled: boolean,
@@ -219088,6 +219159,7 @@ export type GraphQLTypes = {
_not?: GraphQLTypes["maps_bool_exp"] | undefined | null,
_or?: Array | undefined | null,
active_pool?: GraphQLTypes["Boolean_comparison_exp"] | undefined | null,
+ deleted_at?: GraphQLTypes["timestamptz_comparison_exp"] | undefined | null,
e_match_type?: GraphQLTypes["e_match_types_bool_exp"] | undefined | null,
enabled?: GraphQLTypes["Boolean_comparison_exp"] | undefined | null,
id?: GraphQLTypes["uuid_comparison_exp"] | undefined | null,
@@ -219107,6 +219179,7 @@ export type GraphQLTypes = {
/** input type for inserting data into table "maps" */
["maps_insert_input"]: {
active_pool?: boolean | undefined | null,
+ deleted_at?: GraphQLTypes["timestamptz"] | undefined | null,
e_match_type?: GraphQLTypes["e_match_types_obj_rel_insert_input"] | undefined | null,
enabled?: boolean | undefined | null,
id?: GraphQLTypes["uuid"] | undefined | null,
@@ -219122,6 +219195,7 @@ export type GraphQLTypes = {
/** aggregate max on columns */
["maps_max_fields"]: {
__typename: "maps_max_fields",
+ deleted_at?: GraphQLTypes["timestamptz"] | undefined | null,
id?: GraphQLTypes["uuid"] | undefined | null,
label?: string | undefined | null,
name?: string | undefined | null,
@@ -219131,7 +219205,8 @@ export type GraphQLTypes = {
};
/** order by max() on columns of table "maps" */
["maps_max_order_by"]: {
- id?: GraphQLTypes["order_by"] | undefined | null,
+ deleted_at?: GraphQLTypes["order_by"] | undefined | null,
+ id?: GraphQLTypes["order_by"] | undefined | null,
label?: GraphQLTypes["order_by"] | undefined | null,
name?: GraphQLTypes["order_by"] | undefined | null,
patch?: GraphQLTypes["order_by"] | undefined | null,
@@ -219141,6 +219216,7 @@ export type GraphQLTypes = {
/** aggregate min on columns */
["maps_min_fields"]: {
__typename: "maps_min_fields",
+ deleted_at?: GraphQLTypes["timestamptz"] | undefined | null,
id?: GraphQLTypes["uuid"] | undefined | null,
label?: string | undefined | null,
name?: string | undefined | null,
@@ -219150,7 +219226,8 @@ export type GraphQLTypes = {
};
/** order by min() on columns of table "maps" */
["maps_min_order_by"]: {
- id?: GraphQLTypes["order_by"] | undefined | null,
+ deleted_at?: GraphQLTypes["order_by"] | undefined | null,
+ id?: GraphQLTypes["order_by"] | undefined | null,
label?: GraphQLTypes["order_by"] | undefined | null,
name?: GraphQLTypes["order_by"] | undefined | null,
patch?: GraphQLTypes["order_by"] | undefined | null,
@@ -219180,6 +219257,7 @@ export type GraphQLTypes = {
/** Ordering options when selecting data from "maps". */
["maps_order_by"]: {
active_pool?: GraphQLTypes["order_by"] | undefined | null,
+ deleted_at?: GraphQLTypes["order_by"] | undefined | null,
e_match_type?: GraphQLTypes["e_match_types_order_by"] | undefined | null,
enabled?: GraphQLTypes["order_by"] | undefined | null,
id?: GraphQLTypes["order_by"] | undefined | null,
@@ -219205,6 +219283,7 @@ export type GraphQLTypes = {
/** input type for updating data in table "maps" */
["maps_set_input"]: {
active_pool?: boolean | undefined | null,
+ deleted_at?: GraphQLTypes["timestamptz"] | undefined | null,
enabled?: boolean | undefined | null,
id?: GraphQLTypes["uuid"] | undefined | null,
label?: string | undefined | null,
@@ -219224,6 +219303,7 @@ export type GraphQLTypes = {
/** Initial value of the column from where the streaming should start */
["maps_stream_cursor_value_input"]: {
active_pool?: boolean | undefined | null,
+ deleted_at?: GraphQLTypes["timestamptz"] | undefined | null,
enabled?: boolean | undefined | null,
id?: GraphQLTypes["uuid"] | undefined | null,
label?: string | undefined | null,
@@ -265475,6 +265555,7 @@ export enum game_server_node_plugins_select_column {
id = "id",
installed_at = "installed_at",
last_error = "last_error",
+ path = "path",
plugin_slug = "plugin_slug",
runtime = "runtime",
source = "source",
@@ -265500,6 +265581,7 @@ export enum game_server_node_plugins_update_column {
id = "id",
installed_at = "installed_at",
last_error = "last_error",
+ path = "path",
plugin_slug = "plugin_slug",
runtime = "runtime",
source = "source",
@@ -266054,6 +266136,7 @@ export enum maps_constraint {
/** select columns of table "maps" */
export enum maps_select_column {
active_pool = "active_pool",
+ deleted_at = "deleted_at",
enabled = "enabled",
id = "id",
label = "label",
@@ -266076,6 +266159,7 @@ export enum maps_select_column_maps_aggregate_bool_exp_bool_or_arguments_columns
/** update columns of table "maps" */
export enum maps_update_column {
active_pool = "active_pool",
+ deleted_at = "deleted_at",
enabled = "enabled",
id = "id",
label = "label",
diff --git a/i18n/locales/ar_SA.json b/i18n/locales/ar_SA.json
index 4c09be96e..603583def 100644
--- a/i18n/locales/ar_SA.json
+++ b/i18n/locales/ar_SA.json
@@ -1394,8 +1394,8 @@
"manual_caption": "خارج الدليل",
"modes": "أنماط اللعب",
"modes_caption": "مُعرّفة",
- "modes_unranked": "غير مصنّفة",
- "modes_unranked_caption": "أنماط لا تؤثر في ELO"
+ "modes_unranked": "غير مناسب للدرافت",
+ "modes_unranked_caption": "أوضاع مخفية في ردهات الدرافت"
}
},
"tournaments": {
@@ -5204,8 +5204,7 @@
"game_mode": {
"title": "نمط اللعب",
"none": "Competitive (بلا نمط)",
- "description": "يحمّل مجموعة من الإضافات ومتغيرات الكونسول على سيرفر المباراة.",
- "not_competitive_safe": "هذا النمط غير معلَّم كآمن للعب التنافسي. لا يزال يُحتسب في ELO — علّمه آمناً للتنافسي في إعدادات النمط إن كان ذلك مقصوداً."
+ "description": "يحمّل مجموعة من الإضافات ومتغيرات الكونسول على سيرفر المباراة."
}
},
"schedule": {
@@ -7056,8 +7055,7 @@
"step_mode": "النمط",
"mode_description": "كيف تُلعب المباراة. اتركه على Competitive لمباراة عادية، أو اختر نمطاً لتحميل إضافاته على السيرفر.",
"mode_none": "Competitive",
- "mode_none_hint": "قواعد قياسية. تُحتسب في ELO ولوحات الصدارة.",
- "mode_empty": "لا توجد أنماط لعب معدّة بعد. يمكن للمسؤول إضافتها من الإعدادات."
+ "mode_none_hint": "قواعد قياسية. تُحتسب في ELO ولوحات الصدارة."
},
"host": "المستضيف",
"invite": {
@@ -8206,7 +8204,6 @@
"description": "الوصف",
"competitive_safe": "آمن للعب التنافسي",
"competitive_safe_description": "ما إذا كان يمكن استخدام هذا النمط في مباراة مصنّفة أو مباراة توفيق.",
- "competitive_safe_warning": "سيُعرض هذا النمط في المباريات الودّية فقط. السيرفرات المصنّفة لا ترث أي نمط، لذا يبدأ التوفيق دائماً بمجموعة إضافات نظيفة.",
"plugins": "الإضافات",
"plugins_description": "تُحمّل بالترتيب المعروض، بعد أي شيء وُضع يدوياً في custom-plugins.",
"no_plugins": "لا توجد إضافات لعبة في الدليل بعد. زامن السجل وثبّت واحدة أولاً.",
@@ -8217,7 +8214,6 @@
"extra_game_params_description": "تُضاف إلى سطر أوامر السيرفر عند بدئه.",
"save": "احفظ النمط",
"saved": "تم حفظ نمط اللعب",
- "archive": "أرشف",
"archived": "تمت أرشفة نمط اللعب",
"runtime_none": "هذه الإضافات لا تشترك في أي إطار عمل، لذا لا يمكن تشغيل هذا النمط في أي مكان. أزل الإضافة التي تستهدف الإطار الآخر.",
"runtime_only": "يعمل على {runtime} فقط، لأنه الإطار الوحيد الذي تتوفر له كل الإضافات هنا."
diff --git a/i18n/locales/da_DK.json b/i18n/locales/da_DK.json
index 723ca3d7c..419dc0cf3 100644
--- a/i18n/locales/da_DK.json
+++ b/i18n/locales/da_DK.json
@@ -1394,8 +1394,8 @@
"manual_caption": "uden for kataloget",
"modes": "Spiltilstande",
"modes_caption": "defineret",
- "modes_unranked": "Uranglerede",
- "modes_unranked_caption": "tilstande der springer ELO over"
+ "modes_unranked": "Ikke draft-egnet",
+ "modes_unranked_caption": "tilstande skjult i draft-lobbyer"
}
},
"tournaments": {
@@ -5204,8 +5204,7 @@
"game_mode": {
"title": "Spiltilstand",
"none": "Competitive (ingen tilstand)",
- "description": "Indlæser et sæt plugins og console-variabler på kampserveren.",
- "not_competitive_safe": "Denne tilstand er ikke markeret som sikker til competitive. Den tæller stadig med i ELO — markér den som sikker til competitive på selve tilstanden, hvis det er meningen."
+ "description": "Indlæser et sæt plugins og console-variabler på kampserveren."
}
},
"schedule": {
@@ -7056,8 +7055,7 @@
"step_mode": "Tilstand",
"mode_description": "Hvordan kampen spilles. Lad den stå på Competitive for en normal kamp, eller vælg en tilstand for at indlæse dens plugins på serveren.",
"mode_none": "Competitive",
- "mode_none_hint": "Standardregler. Tæller med i ELO og ranglister.",
- "mode_empty": "Der er endnu ingen spiltilstande sat op. En administrator kan tilføje dem under Indstillinger."
+ "mode_none_hint": "Standardregler. Tæller med i ELO og ranglister."
},
"host": "Værten",
"invite": {
@@ -8206,7 +8204,6 @@
"description": "Beskrivelse",
"competitive_safe": "Sikker til competitive",
"competitive_safe_description": "Om denne tilstand må bruges af en ranglet kamp eller en matchmaking-kamp.",
- "competitive_safe_warning": "Denne tilstand tilbydes kun på casual-kampe. Ranglede servere arver aldrig en tilstand, så matchmaking starter altid med et rent plugin-sæt.",
"plugins": "Plugins",
"plugins_description": "Indlæses i den viste rækkefølge, efter alt der er lagt manuelt i custom-plugins.",
"no_plugins": "Ingen spil-plugins i kataloget endnu. Synkronisér registry og installér et først.",
@@ -8217,7 +8214,6 @@
"extra_game_params_description": "Tilføjes til serverens kommandolinje når den starter.",
"save": "Gem tilstand",
"saved": "Spiltilstand gemt",
- "archive": "Arkivér",
"archived": "Spiltilstand arkiveret",
"runtime_none": "Disse plugins har intet framework til fælles, så denne tilstand kan ikke køre nogen steder. Fjern det plugin, der er bygget til det andet framework.",
"runtime_only": "Kører kun på {runtime}, fordi det er det eneste framework alle plugins her findes til."
diff --git a/i18n/locales/de_DE.json b/i18n/locales/de_DE.json
index 2df91e5ee..bd0bbe84f 100644
--- a/i18n/locales/de_DE.json
+++ b/i18n/locales/de_DE.json
@@ -1394,8 +1394,8 @@
"manual_caption": "außerhalb des Katalogs",
"modes": "Spielmodi",
"modes_caption": "definiert",
- "modes_unranked": "Unranked",
- "modes_unranked_caption": "Modi ohne ELO"
+ "modes_unranked": "Nicht draft-tauglich",
+ "modes_unranked_caption": "Modi, die in Draft-Lobbys ausgeblendet sind"
}
},
"tournaments": {
@@ -5204,8 +5204,7 @@
"game_mode": {
"title": "Spielmodus",
"none": "Competitive (kein Modus)",
- "description": "Lädt eine Reihe von Plugins und Console-Variablen auf dem Match-Server.",
- "not_competitive_safe": "Dieser Modus ist nicht als Competitive-tauglich markiert. Er zählt trotzdem für ELO — markiere ihn im Modus selbst als Competitive-tauglich, wenn das so gewollt ist."
+ "description": "Lädt eine Reihe von Plugins und Console-Variablen auf dem Match-Server."
}
},
"schedule": {
@@ -7056,8 +7055,7 @@
"step_mode": "Modus",
"mode_description": "Wie das Match gespielt wird. Für ein normales Match auf Competitive lassen, oder einen Modus wählen, damit dessen Plugins auf dem Server geladen werden.",
"mode_none": "Competitive",
- "mode_none_hint": "Standardregeln. Zählt für ELO und Bestenlisten.",
- "mode_empty": "Es sind noch keine Spielmodi eingerichtet. Ein Administrator kann sie unter Einstellungen anlegen."
+ "mode_none_hint": "Standardregeln. Zählt für ELO und Bestenlisten."
},
"host": "Der Host",
"invite": {
@@ -8206,7 +8204,6 @@
"description": "Beschreibung",
"competitive_safe": "Für Competitive geeignet",
"competitive_safe_description": "Ob dieser Modus von Ranked- oder Matchmaking-Matches genutzt werden darf.",
- "competitive_safe_warning": "Dieser Modus wird nur bei Casual-Matches angeboten. Ranked-Server erben nie einen Modus, Matchmaking startet also immer mit einem sauberen Plugin-Satz.",
"plugins": "Plugins",
"plugins_description": "Werden in der gezeigten Reihenfolge geladen, nach allem, was von Hand in custom-plugins liegt.",
"no_plugins": "Noch keine Spiel-Plugins im Katalog. Synchronisiere die Registry und installiere zuerst eines.",
@@ -8217,7 +8214,6 @@
"extra_game_params_description": "Wird beim Start an die Kommandozeile des Servers angehängt.",
"save": "Modus speichern",
"saved": "Spielmodus gespeichert",
- "archive": "Archivieren",
"archived": "Spielmodus archiviert",
"runtime_none": "Diese Plugins haben kein gemeinsames Framework, dieser Modus kann also nirgends laufen. Entferne das Plugin, das auf das andere Framework zielt.",
"runtime_only": "Läuft nur auf {runtime}, weil das das einzige Framework ist, für das es hier jedes Plugin gibt."
diff --git a/i18n/locales/en.json b/i18n/locales/en.json
index 24d8e1ab7..08dffcc97 100644
--- a/i18n/locales/en.json
+++ b/i18n/locales/en.json
@@ -1394,8 +1394,8 @@
"manual_caption": "outside the catalog",
"modes": "Game modes",
"modes_caption": "defined",
- "modes_unranked": "Unranked",
- "modes_unranked_caption": "modes that skip ELO"
+ "modes_unranked": "Not draft-safe",
+ "modes_unranked_caption": "modes hidden from draft lobbies"
}
},
"tournaments": {
@@ -2463,7 +2463,7 @@
"game_modes": {
"title": "Game Modes",
"section": "Game Modes",
- "description": "A mode bundles the plugins, cvars and rules that make a match play differently. Matches and community servers pick one.",
+ "description": "A mode bundles the plugins, cvars and rules that make a match play differently. Matches and community servers pick one; matches with a custom mode never count toward ELO.",
"create": "New Mode",
"create_title": "New Game Mode",
"edit_title": "Edit Game Mode",
@@ -2471,9 +2471,10 @@
"empty": "No game modes yet. Create one to let matches run something other than competitive.",
"requires_plugins": "Enable Game Plugins first — a mode has nothing to load without them.",
"disabled": "Disabled",
- "competitive": "Competitive safe",
- "casual_only": "Casual only",
- "plugin_count": "{count} plugins"
+ "competitive": "In draft lobbies",
+ "casual_only": "Hidden from drafts",
+ "plugin_count": "{count} plugins",
+ "archived": "Archived"
}
},
"language": {
@@ -3262,17 +3263,20 @@
"delete_map": "Delete Map",
"delete_confirm": {
"title": "Delete Map",
- "description": "Are you sure you want to delete this map? This action cannot be undone."
+ "description": "Are you sure you want to delete this map? It is removed from every map pool and picker, but matches already played on it keep their history. You can restore it later, or simply add a map with the same name."
},
"success": {
"create": "Map created successfully",
"update": "Map updated successfully",
"delete": "Map deleted successfully",
+ "restore": "Map restored",
+ "restore_description": "A deleted map with this name already existed, so it was restored with its match history intact.",
"workshop_refresh": "Workshop map details refreshed successfully"
},
"error": {
"create": "Error creating map",
"update": "Error updating map",
+ "already_exists": "A map with this name already exists",
"invalid_workshop": "Invalid workshop map ID. Please verify the ID exists on Steam Workshop.",
"workshop_refresh": "Error refreshing workshop map details"
},
@@ -3287,7 +3291,11 @@
"active_duty": "Active Duty",
"available_modes": "Available In Modes",
"workshop_id": "Workshop Link",
- "search": "Search Maps"
+ "search": "Search Maps",
+ "deleted_maps": "Deleted Maps",
+ "deleted_maps_description": "Deleted maps are hidden from every map pool and picker, but matches already played on them keep their history. Restoring brings a map back as it was.",
+ "deleted_on": "Deleted {date}",
+ "restore_map": "Restore"
},
"map_pool": {
"toggle_pool_type": "Updated Map Pools",
@@ -3658,7 +3666,9 @@
"off_hint": "Left on, the plugin still installs and loads — the parts that change what a player sees just do nothing.",
"warning_title": "Warning: this can get your Steam GSLTs banned",
"warning_description": "Per Valve, running outside their official server guidelines can trigger every Game Server Login Token (GSLT) on the server owner's Steam account to be banned. Enable at your own risk.",
- "warning_link_label": "Valve's server guidelines"
+ "warning_link_label": "Valve's server guidelines",
+ "already_off": "Already off for this deployment: 5stack Ranks turns Valve's server guidelines off to show ranks in-game, and the risk it carries is against your Steam account rather than one server.",
+ "already_off_link": "5stack Ranks"
},
"custom": {
"add": "Add a plugin",
@@ -3687,7 +3697,8 @@
"remove": "Remove from catalog",
"remove_hint": "Uninstall it from your nodes before taking it out of the catalog.",
"removed": "Removed from the catalog"
- }
+ },
+ "retry": "Retry"
},
"awards": {
"title": "Awards",
@@ -5263,7 +5274,7 @@
"title": "Game Mode",
"none": "Competitive (no mode)",
"description": "Loads a set of plugins and console variables on the match server.",
- "not_competitive_safe": "This mode is not marked safe for competitive play. It still counts toward ELO — mark it competitive safe on the mode itself if that is intended."
+ "unranked_note": "Matches with a custom game mode never count toward ELO or the leaderboards."
}
},
"schedule": {
@@ -6595,13 +6606,20 @@
"game_server_node_description": "Select a game server node with CS installed",
"type": "Server Type",
"select_type": "Select Server Type",
+ "game_mode": "Game Mode",
+ "select_game_mode": "Select Game Mode",
+ "valve_preset_group": "Valve presets",
+ "custom_mode_group": "Custom modes",
+ "custom_mode_group_locked": "needs a game server node",
+ "custom_modes_need_node_title": "Custom modes need a game server node",
+ "custom_modes_need_node_description": "A custom mode is a set of plugins 5Stack installs onto the server it runs. It cannot install anything on a third-party dedicated server, so attach this server to a game server node under Connection to pick one.",
"game": "Game",
"csgo_ranked_unavailable_title": "Ranked Not Available",
"csgo_ranked_unavailable_description": "Ranked mode is not yet available for CS:GO servers.",
"ranked_server": "Ranked Server",
"ranked_server_description": "Fully managed ranked experience by 5stack.",
- "valve_presets": "Valve Presets",
- "valve_presets_description": "Choose from casual/competitive and other Valve-presets.",
+ "valve_presets": "Valve Presets & Custom Modes",
+ "valve_presets_description": "Run a Valve preset like casual or deathmatch, or a custom game mode with its plugins.",
"connect_password": "Connect Password",
"connect_password_description": "Password required to connect to the server (optional)",
"rcon_password": "RCON Password",
@@ -7110,15 +7128,14 @@
"clear_team": "Clear team",
"both_teams_private": "With both teams set the lineup is locked, so this lobby stays private.",
"step_format": "Draft Mode",
- "step_settings": "Match Settings",
+ "step_settings": "Game Settings",
"step_rules": "Lobby Rules",
"back": "Back",
"next": "Next",
"step_mode": "Mode",
- "mode_description": "How the match plays. Leave it on Competitive for a normal match, or pick a mode to load its plugins on the server.",
+ "mode_description": "How the match plays. Leave it on Competitive for a normal match, or pick a mode to load its plugins on the server. Custom modes never count toward ELO.",
"mode_none": "Competitive",
- "mode_none_hint": "Standard rules. Counts toward ELO and leaderboards.",
- "mode_empty": "No game modes are set up yet. An administrator can add them under Settings."
+ "mode_none_hint": "Standard rules. Counts toward ELO and leaderboards."
},
"host": "The host",
"invite": {
@@ -7252,7 +7269,7 @@
"kick_confirm_title": "Remove this player?",
"kick_confirm_description": "They will be removed from the draft room.",
"load_failed": "Could not load this draft room.",
- "match_settings": "Match Settings"
+ "match_settings": "Game Settings"
},
"bar": {
"region": "Region",
@@ -8265,9 +8282,10 @@
"name": "Name",
"slug": "Slug",
"description": "Description",
- "competitive_safe": "Safe for competitive play",
- "competitive_safe_description": "Whether this mode may be used by a ranked or matchmaking match.",
- "competitive_safe_warning": "This mode will only be offered on casual matches. Ranked servers never inherit a mode, so matchmaking always comes up on a clean plugin set.",
+ "enabled": "Enabled",
+ "enabled_description": "Disabled modes are kept but cannot be picked for a match, server or draft room.",
+ "competitive_safe": "Offer in draft lobbies",
+ "competitive_safe_description": "Lobby hosts can pick this mode when creating a draft room. Matches with any custom mode never count toward ELO or the leaderboards.",
"plugins": "Plugins",
"plugins_description": "Loaded in the order shown, after anything placed in custom-plugins by hand.",
"no_plugins": "No game plugins in the catalog yet. Sync the registry and install one first.",
@@ -8278,10 +8296,17 @@
"extra_game_params_description": "Appended to the server's command line when it starts.",
"save": "Save Mode",
"saved": "Game mode saved",
- "archive": "Archive",
- "archived": "Game mode archived",
+ "archived": "Game mode hidden",
+ "restore": "Restore",
+ "restored": "Game mode restored",
+ "delete": "Delete",
+ "deleted": "Game mode deleted",
+ "delete_confirm_title": "Delete {name}?",
+ "delete_confirm_description": "Removes the mode permanently. If any match has already run it, it is hidden instead — that history stays intact and you can restore it later.",
"runtime_none": "These plugins have no framework in common, so this mode cannot run anywhere. Remove whichever one targets the other framework.",
- "runtime_only": "Runs on {runtime} only, because that is the one framework every plugin here ships for."
+ "runtime_only": "Runs on {runtime} only, because that is the one framework every plugin here ships for.",
+ "open_plugin": "Open this plugin's page in a new tab",
+ "archived_instead": "Matches have already run this mode, so it was hidden instead of deleted. You can restore it any time."
}
}
}
diff --git a/i18n/locales/es_ES.json b/i18n/locales/es_ES.json
index 822040a72..a2ece8054 100644
--- a/i18n/locales/es_ES.json
+++ b/i18n/locales/es_ES.json
@@ -1394,8 +1394,8 @@
"manual_caption": "fuera del catálogo",
"modes": "Modos de juego",
"modes_caption": "definidos",
- "modes_unranked": "Sin clasificar",
- "modes_unranked_caption": "modos que no afectan al ELO"
+ "modes_unranked": "No aptos para draft",
+ "modes_unranked_caption": "modos ocultos en las salas de draft"
}
},
"tournaments": {
@@ -5204,8 +5204,7 @@
"game_mode": {
"title": "Modo de juego",
"none": "Competitivo (sin modo)",
- "description": "Carga un conjunto de plugins y variables de consola en el servidor de la partida.",
- "not_competitive_safe": "Este modo no está marcado como apto para competitivo. Aun así cuenta para el ELO: márcalo como apto para competitivo en el propio modo si es lo que quieres."
+ "description": "Carga un conjunto de plugins y variables de consola en el servidor de la partida."
}
},
"schedule": {
@@ -7056,8 +7055,7 @@
"step_mode": "Modo",
"mode_description": "Cómo se juega la partida. Déjalo en Competitivo para una partida normal, o elige un modo para cargar sus plugins en el servidor.",
"mode_none": "Competitivo",
- "mode_none_hint": "Reglas estándar. Cuenta para el ELO y las clasificaciones.",
- "mode_empty": "Todavía no hay modos de juego configurados. Un administrador puede añadirlos en Ajustes."
+ "mode_none_hint": "Reglas estándar. Cuenta para el ELO y las clasificaciones."
},
"host": "El anfitrión",
"invite": {
@@ -8206,7 +8204,6 @@
"description": "Descripción",
"competitive_safe": "Apto para juego competitivo",
"competitive_safe_description": "Si este modo puede usarse en partidas clasificatorias o de emparejamiento.",
- "competitive_safe_warning": "Este modo solo se ofrecerá en partidas casual. Los servidores clasificatorios nunca heredan un modo, así que el emparejamiento siempre arranca con un conjunto de plugins limpio.",
"plugins": "Plugins",
"plugins_description": "Se cargan en el orden mostrado, después de lo que se haya puesto a mano en custom-plugins.",
"no_plugins": "Todavía no hay plugins de juego en el catálogo. Sincroniza el registro e instala uno primero.",
@@ -8217,7 +8214,6 @@
"extra_game_params_description": "Se añaden a la línea de comandos del servidor al iniciarse.",
"save": "Guardar modo",
"saved": "Modo de juego guardado",
- "archive": "Archivar",
"archived": "Modo de juego archivado",
"runtime_none": "Estos plugins no comparten ningún framework, así que este modo no puede ejecutarse en ningún sitio. Quita el que apunte al otro framework.",
"runtime_only": "Solo funciona en {runtime}, porque es el único framework para el que existen todos estos plugins."
diff --git a/i18n/locales/fr_FR.json b/i18n/locales/fr_FR.json
index c5c5e1b9d..f5fe35a02 100644
--- a/i18n/locales/fr_FR.json
+++ b/i18n/locales/fr_FR.json
@@ -1394,8 +1394,8 @@
"manual_caption": "hors catalogue",
"modes": "Modes de jeu",
"modes_caption": "définis",
- "modes_unranked": "Non classé",
- "modes_unranked_caption": "modes sans ELO"
+ "modes_unranked": "Non compatible draft",
+ "modes_unranked_caption": "modes masqués dans les lobbys de draft"
}
},
"tournaments": {
@@ -5204,8 +5204,7 @@
"game_mode": {
"title": "Mode de jeu",
"none": "Compétitif (aucun mode)",
- "description": "Charge un ensemble de plugins et de variables de console sur le serveur du match.",
- "not_competitive_safe": "Ce mode n'est pas marqué comme compatible avec le jeu compétitif. Il compte quand même pour l'ELO — marque-le comme compatible compétitif dans le mode lui-même si c'est voulu."
+ "description": "Charge un ensemble de plugins et de variables de console sur le serveur du match."
}
},
"schedule": {
@@ -7056,8 +7055,7 @@
"step_mode": "Mode",
"mode_description": "Comment le match se joue. Laisse sur Compétitif pour un match normal, ou choisis un mode pour charger ses plugins sur le serveur.",
"mode_none": "Compétitif",
- "mode_none_hint": "Règles standard. Compte pour l'ELO et les classements.",
- "mode_empty": "Aucun mode de jeu n'est encore configuré. Un administrateur peut en ajouter dans les Paramètres."
+ "mode_none_hint": "Règles standard. Compte pour l'ELO et les classements."
},
"host": "L'hôte",
"invite": {
@@ -8206,7 +8204,6 @@
"description": "Description",
"competitive_safe": "Compatible avec le jeu compétitif",
"competitive_safe_description": "Si ce mode peut être utilisé par un match classé ou de matchmaking.",
- "competitive_safe_warning": "Ce mode ne sera proposé que sur les matchs casual. Les serveurs classés n'héritent jamais d'un mode, le matchmaking démarre donc toujours avec un jeu de plugins propre.",
"plugins": "Plugins",
"plugins_description": "Chargés dans l'ordre affiché, après tout ce qui a été placé à la main dans custom-plugins.",
"no_plugins": "Aucun plugin de jeu dans le catalogue. Synchronise le registre et installes-en un d'abord.",
@@ -8217,7 +8214,6 @@
"extra_game_params_description": "Ajoutés à la ligne de commande du serveur à son démarrage.",
"save": "Enregistrer le mode",
"saved": "Mode de jeu enregistré",
- "archive": "Archiver",
"archived": "Mode de jeu archivé",
"runtime_none": "Ces plugins n'ont aucun framework en commun, ce mode ne peut donc tourner nulle part. Retire celui qui vise l'autre framework.",
"runtime_only": "Tourne uniquement sur {runtime}, car c'est le seul framework pour lequel tous ces plugins existent."
diff --git a/i18n/locales/it_IT.json b/i18n/locales/it_IT.json
index 2f4d0adca..81f4e2d1c 100644
--- a/i18n/locales/it_IT.json
+++ b/i18n/locales/it_IT.json
@@ -1394,8 +1394,8 @@
"manual_caption": "fuori dal catalogo",
"modes": "Modalità di gioco",
"modes_caption": "definite",
- "modes_unranked": "Non classificate",
- "modes_unranked_caption": "modalità che ignorano l'ELO"
+ "modes_unranked": "Non adatti al draft",
+ "modes_unranked_caption": "modalità nascoste nelle lobby di draft"
}
},
"tournaments": {
@@ -5204,8 +5204,7 @@
"game_mode": {
"title": "Modalità di gioco",
"none": "Competitive (nessuna modalità)",
- "description": "Carica un insieme di plugin e variabili di console sul server della partita.",
- "not_competitive_safe": "Questa modalità non è contrassegnata come adatta al gioco competitivo. Conta comunque per l'ELO — contrassegnala come adatta al competitive nella modalità stessa se è voluto."
+ "description": "Carica un insieme di plugin e variabili di console sul server della partita."
}
},
"schedule": {
@@ -7056,8 +7055,7 @@
"step_mode": "Modalità",
"mode_description": "Come si gioca la partita. Lascia su Competitive per una partita normale, oppure scegli una modalità per caricarne i plugin sul server.",
"mode_none": "Competitive",
- "mode_none_hint": "Regole standard. Conta per l'ELO e le classifiche.",
- "mode_empty": "Non è ancora configurata alcuna modalità di gioco. Un amministratore può aggiungerle nelle Impostazioni."
+ "mode_none_hint": "Regole standard. Conta per l'ELO e le classifiche."
},
"host": "L'host",
"invite": {
@@ -8206,7 +8204,6 @@
"description": "Descrizione",
"competitive_safe": "Adatta al gioco competitivo",
"competitive_safe_description": "Se questa modalità può essere usata da una partita classificata o di matchmaking.",
- "competitive_safe_warning": "Questa modalità sarà offerta solo nelle partite casual. I server classificati non ereditano mai una modalità, quindi il matchmaking parte sempre con un set di plugin pulito.",
"plugins": "Plugin",
"plugins_description": "Caricati nell'ordine mostrato, dopo tutto ciò che è stato messo a mano in custom-plugins.",
"no_plugins": "Nessun plugin di gioco nel catalogo. Sincronizza il registry e installane uno prima.",
@@ -8217,7 +8214,6 @@
"extra_game_params_description": "Aggiunti alla riga di comando del server all'avvio.",
"save": "Salva modalità",
"saved": "Modalità di gioco salvata",
- "archive": "Archivia",
"archived": "Modalità di gioco archiviata",
"runtime_none": "Questi plugin non hanno alcun framework in comune, quindi questa modalità non può girare da nessuna parte. Rimuovi quello destinato all'altro framework.",
"runtime_only": "Gira solo su {runtime}, perché è l'unico framework per cui esistono tutti questi plugin."
diff --git a/i18n/locales/ja_JP.json b/i18n/locales/ja_JP.json
index 5f8e2ae02..6dc4330c5 100644
--- a/i18n/locales/ja_JP.json
+++ b/i18n/locales/ja_JP.json
@@ -1394,8 +1394,8 @@
"manual_caption": "カタログ外",
"modes": "ゲームモード",
"modes_caption": "定義済み",
- "modes_unranked": "アンランク",
- "modes_unranked_caption": "ELO に影響しないモード"
+ "modes_unranked": "ドラフト非対応",
+ "modes_unranked_caption": "ドラフトロビーに表示されないモード"
}
},
"tournaments": {
@@ -5204,8 +5204,7 @@
"game_mode": {
"title": "ゲームモード",
"none": "Competitive(モードなし)",
- "description": "試合サーバーにプラグインとコンソール変数のセットを読み込みます。",
- "not_competitive_safe": "このモードは競技用に安全とは設定されていません。それでも ELO には反映されます。意図的であれば、モード側で競技用に安全と設定してください。"
+ "description": "試合サーバーにプラグインとコンソール変数のセットを読み込みます。"
}
},
"schedule": {
@@ -7056,8 +7055,7 @@
"step_mode": "モード",
"mode_description": "試合の進み方です。通常の試合なら Competitive のままにし、モードを選ぶとそのプラグインがサーバーに読み込まれます。",
"mode_none": "Competitive",
- "mode_none_hint": "標準ルール。ELO とリーダーボードに反映されます。",
- "mode_empty": "ゲームモードがまだ設定されていません。管理者が設定から追加できます。"
+ "mode_none_hint": "標準ルール。ELO とリーダーボードに反映されます。"
},
"host": "ホスト",
"invite": {
@@ -8206,7 +8204,6 @@
"description": "説明",
"competitive_safe": "競技プレイに安全",
"competitive_safe_description": "このモードをランクマッチやマッチメイキングの試合で使用できるかどうか。",
- "competitive_safe_warning": "このモードはカジュアル試合でのみ選択できます。ランクサーバーはモードを引き継がないため、マッチメイキングは常にクリーンなプラグイン構成で始まります。",
"plugins": "プラグイン",
"plugins_description": "表示順に読み込まれます(custom-plugins に手動で置いたものの後)。",
"no_plugins": "カタログにゲームプラグインがまだありません。まずレジストリを同期してインストールしてください。",
@@ -8217,7 +8214,6 @@
"extra_game_params_description": "サーバー起動時にコマンドラインへ追加されます。",
"save": "モードを保存",
"saved": "ゲームモードを保存しました",
- "archive": "アーカイブ",
"archived": "ゲームモードをアーカイブしました",
"runtime_none": "これらのプラグインには共通するフレームワークがないため、このモードはどこでも動作しません。別のフレームワーク向けのプラグインを削除してください。",
"runtime_only": "{runtime} でのみ動作します。ここにあるすべてのプラグインが対応している唯一のフレームワークだからです。"
diff --git a/i18n/locales/ko_KR.json b/i18n/locales/ko_KR.json
index 5007e87c4..4a5274911 100644
--- a/i18n/locales/ko_KR.json
+++ b/i18n/locales/ko_KR.json
@@ -1394,8 +1394,8 @@
"manual_caption": "카탈로그 외부",
"modes": "게임 모드",
"modes_caption": "정의됨",
- "modes_unranked": "언랭크",
- "modes_unranked_caption": "ELO에 반영되지 않는 모드"
+ "modes_unranked": "드래프트 비대응",
+ "modes_unranked_caption": "드래프트 로비에서 숨겨진 모드"
}
},
"tournaments": {
@@ -5204,8 +5204,7 @@
"game_mode": {
"title": "게임 모드",
"none": "컴페티티브 (모드 없음)",
- "description": "경기 서버에 플러그인과 콘솔 변수 세트를 불러옵니다.",
- "not_competitive_safe": "이 모드는 컴페티티브에 안전한 것으로 표시되어 있지 않습니다. 그래도 ELO에는 반영됩니다. 의도한 것이라면 모드 자체에서 컴페티티브 가능으로 표시하세요."
+ "description": "경기 서버에 플러그인과 콘솔 변수 세트를 불러옵니다."
}
},
"schedule": {
@@ -7056,8 +7055,7 @@
"step_mode": "모드",
"mode_description": "경기 진행 방식입니다. 일반 경기는 컴페티티브로 두고, 모드를 선택하면 해당 플러그인이 서버에 로드됩니다.",
"mode_none": "컴페티티브",
- "mode_none_hint": "표준 규칙. ELO와 리더보드에 반영됩니다.",
- "mode_empty": "설정된 게임 모드가 아직 없습니다. 관리자가 설정에서 추가할 수 있습니다."
+ "mode_none_hint": "표준 규칙. ELO와 리더보드에 반영됩니다."
},
"host": "호스트",
"invite": {
@@ -8206,7 +8204,6 @@
"description": "설명",
"competitive_safe": "컴페티티브 플레이에 안전",
"competitive_safe_description": "이 모드를 랭크 또는 매치메이킹 경기에서 사용할 수 있는지 여부입니다.",
- "competitive_safe_warning": "이 모드는 캐주얼 경기에서만 제공됩니다. 랭크 서버는 모드를 물려받지 않으므로 매치메이킹은 항상 깨끗한 플러그인 구성으로 시작합니다.",
"plugins": "플러그인",
"plugins_description": "표시된 순서대로, custom-plugins에 수동으로 넣은 것 다음에 로드됩니다.",
"no_plugins": "카탈로그에 게임 플러그인이 아직 없습니다. 먼저 레지스트리를 동기화하고 하나 설치하세요.",
@@ -8217,7 +8214,6 @@
"extra_game_params_description": "서버가 시작될 때 명령줄에 덧붙습니다.",
"save": "모드 저장",
"saved": "게임 모드를 저장했습니다",
- "archive": "보관",
"archived": "게임 모드를 보관했습니다",
"runtime_none": "이 플러그인들은 공통 프레임워크가 없어 이 모드를 어디서도 실행할 수 없습니다. 다른 프레임워크용 플러그인을 제거하세요.",
"runtime_only": "{runtime}에서만 실행됩니다. 여기 있는 모든 플러그인이 지원하는 유일한 프레임워크이기 때문입니다."
diff --git a/i18n/locales/pl_PL.json b/i18n/locales/pl_PL.json
index d64256c6a..0058e16d2 100644
--- a/i18n/locales/pl_PL.json
+++ b/i18n/locales/pl_PL.json
@@ -1394,8 +1394,8 @@
"manual_caption": "spoza katalogu",
"modes": "Tryby gry",
"modes_caption": "zdefiniowane",
- "modes_unranked": "Nierankingowe",
- "modes_unranked_caption": "tryby pomijające ELO"
+ "modes_unranked": "Nie do draftu",
+ "modes_unranked_caption": "tryby ukryte w lobby draftu"
}
},
"tournaments": {
@@ -5204,8 +5204,7 @@
"game_mode": {
"title": "Tryb gry",
"none": "Competitive (bez trybu)",
- "description": "Wczytuje zestaw wtyczek i zmiennych konsoli na serwerze meczowym.",
- "not_competitive_safe": "Ten tryb nie jest oznaczony jako bezpieczny dla gry competitive. Nadal liczy się do ELO — oznacz go w ustawieniach trybu jako bezpieczny dla competitive, jeśli tak ma być."
+ "description": "Wczytuje zestaw wtyczek i zmiennych konsoli na serwerze meczowym."
}
},
"schedule": {
@@ -7056,8 +7055,7 @@
"step_mode": "Tryb",
"mode_description": "Jak przebiega mecz. Zostaw Competitive dla zwykłego meczu albo wybierz tryb, aby wczytać jego wtyczki na serwerze.",
"mode_none": "Competitive",
- "mode_none_hint": "Standardowe zasady. Liczy się do ELO i rankingów.",
- "mode_empty": "Nie skonfigurowano jeszcze żadnych trybów gry. Administrator może je dodać w Ustawieniach."
+ "mode_none_hint": "Standardowe zasady. Liczy się do ELO i rankingów."
},
"host": "Host",
"invite": {
@@ -8206,7 +8204,6 @@
"description": "Opis",
"competitive_safe": "Bezpieczny dla gry competitive",
"competitive_safe_description": "Czy ten tryb może być użyty w meczu rankingowym lub matchmakingowym.",
- "competitive_safe_warning": "Ten tryb będzie oferowany tylko w meczach casual. Serwery rankingowe nigdy nie dziedziczą trybu, więc matchmaking zawsze startuje z czystym zestawem wtyczek.",
"plugins": "Wtyczki",
"plugins_description": "Wczytywane w pokazanej kolejności, po wszystkim, co ręcznie umieszczono w custom-plugins.",
"no_plugins": "Brak wtyczek gry w katalogu. Najpierw zsynchronizuj rejestr i zainstaluj jakąś.",
@@ -8217,7 +8214,6 @@
"extra_game_params_description": "Dopisywane do linii poleceń serwera przy starcie.",
"save": "Zapisz tryb",
"saved": "Tryb gry zapisany",
- "archive": "Archiwizuj",
"archived": "Tryb gry zarchiwizowany",
"runtime_none": "Te wtyczki nie mają wspólnego frameworka, więc ten tryb nigdzie nie zadziała. Usuń tę, która celuje w drugi framework.",
"runtime_only": "Działa tylko na {runtime}, bo to jedyny framework, dla którego istnieją wszystkie te wtyczki."
diff --git a/i18n/locales/pt_BR.json b/i18n/locales/pt_BR.json
index 0d446554c..a04320f5d 100644
--- a/i18n/locales/pt_BR.json
+++ b/i18n/locales/pt_BR.json
@@ -1239,40 +1239,40 @@
"total_caption": "painéis distintos já vistos"
},
"totals": {
- "self_reported": "Os painéis são auto-hospedados e reportam essas contagens por conta própria; os valores são validados na chegada, mas não podem ser verificados de forma independente. A infraestrutura é uma contagem pontual a partir do último relatório de cada painel, não um total contínuo.",
- "game_server_nodes": "Nós de servidores de jogo",
- "game_server_nodes_caption": "registrados atualmente",
- "servers": "Servidores",
- "servers_caption": "registrados atualmente",
- "public_servers": "Públicos",
- "public_servers_caption": "servidores não ranqueados",
- "matches": "Partidas hospedadas",
- "matches_week": "Hospedadas 7d",
- "matches_month": "Hospedadas 30d",
- "matches_year": "Hospedadas 1y",
- "maps_played": "Mapas jogados",
- "matches_imported": "Partidas importadas",
- "matches_imported_month": "Importadas 30d",
- "players": "Jogadores",
- "players_played": "Jogaram uma partida",
- "players_known": "Steam IDs vistos",
- "players_active": "Jogadores ativos 30d",
- "teams": "Equipes",
- "infrastructure": "Infraestrutura",
- "match_volume": "Volume de partidas",
- "community": "Comunidade",
- "matches_caption": "todo o período, em toda a frota",
- "players_caption": "em uma lineup, últimos 30 dias",
- "hosted_hint": "Hospedadas contam apenas partidas que um painel rodou por conta própria. Partidas importadas vêm do FACEIT ou do histórico de partidas do CS2 e são listadas separadamente.",
- "community_hint": "Jogadores contabiliza contas que fizeram login com a Steam pelo menos uma vez. Um painel também armazena uma linha para cada Steam ID que só foi visto em uma lineup, demo ou sanção — esses são contados separadamente como Steam IDs vistos.",
- "gpu_nodes": "Nós de GPU",
- "gpu_nodes_caption": "registrados atualmente",
- "all_time": "todo o período",
- "last_7d": "últimos 7 dias",
- "last_30d": "últimos 30 dias",
- "last_1y": "últimos 365 dias",
- "signed_in_caption": "logaram pelo menos uma vez",
- "players_known_caption": "inclui nunca logados"
+ "self_reported": "Os painéis são auto-hospedados e reportam essas contagens por conta própria; os valores são validados na chegada, mas não podem ser verificados de forma independente. A infraestrutura é uma contagem pontual a partir do último relatório de cada painel, não um total contínuo.",
+ "game_server_nodes": "Nós de servidores de jogo",
+ "game_server_nodes_caption": "registrados atualmente",
+ "servers": "Servidores",
+ "servers_caption": "registrados atualmente",
+ "public_servers": "Públicos",
+ "public_servers_caption": "servidores não ranqueados",
+ "matches": "Partidas hospedadas",
+ "matches_week": "Hospedadas 7d",
+ "matches_month": "Hospedadas 30d",
+ "matches_year": "Hospedadas 1y",
+ "maps_played": "Mapas jogados",
+ "matches_imported": "Partidas importadas",
+ "matches_imported_month": "Importadas 30d",
+ "players": "Jogadores",
+ "players_played": "Jogaram uma partida",
+ "players_known": "Steam IDs vistos",
+ "players_active": "Jogadores ativos 30d",
+ "teams": "Equipes",
+ "infrastructure": "Infraestrutura",
+ "match_volume": "Volume de partidas",
+ "community": "Comunidade",
+ "matches_caption": "todo o período, em toda a frota",
+ "players_caption": "em uma lineup, últimos 30 dias",
+ "hosted_hint": "Hospedadas contam apenas partidas que um painel rodou por conta própria. Partidas importadas vêm do FACEIT ou do histórico de partidas do CS2 e são listadas separadamente.",
+ "community_hint": "Jogadores contabiliza contas que fizeram login com a Steam pelo menos uma vez. Um painel também armazena uma linha para cada Steam ID que só foi visto em uma lineup, demo ou sanção — esses são contados separadamente como Steam IDs vistos.",
+ "gpu_nodes": "Nós de GPU",
+ "gpu_nodes_caption": "registrados atualmente",
+ "all_time": "todo o período",
+ "last_7d": "últimos 7 dias",
+ "last_30d": "últimos 30 dias",
+ "last_1y": "últimos 365 dias",
+ "signed_in_caption": "logaram pelo menos uma vez",
+ "players_known_caption": "inclui nunca logados"
},
"activity": {
"matches": "Partidas hospedadas por dia (90d)",
@@ -1339,8 +1339,8 @@
"manual_caption": "fora do catálogo",
"modes": "Modos de jogo",
"modes_caption": "definidos",
- "modes_unranked": "Sem ranque",
- "modes_unranked_caption": "modos que não contam para o ELO"
+ "modes_unranked": "Não aptos para draft",
+ "modes_unranked_caption": "modos ocultos nos lobbies de draft"
}
},
"tournaments": {
@@ -1546,7 +1546,7 @@
"title": "Redefinir",
"description": "Retorna o microfone, saída, modo de entrada, sensibilidade e supressão de ruído ao estado inicial. Os níveis de jogadores permanecem inalterados.",
"action": "Redefinir para padrões",
- "done": "Configurações de voz redefinidas neste dispositivo"
+ "done": "Configurações de voz redefinidas neste dispositivo"
}
},
"notification_preferences": {
@@ -3582,27 +3582,27 @@
"group_custom_league_awards": "Prêmios de liga personalizados"
},
"award_detail": {
- "not_found_title": "Premiação não encontrada",
- "not_found": "Esta premiação não existe ou foi excluída.",
- "holders_section": "Detentores",
- "no_holders_title": "Nenhum detentor ainda",
- "no_holders": "Ninguém recebeu esta premiação.",
- "total_holders": "Concessões",
- "unique_players": "Jogadores",
- "unique_teams": "Equipes",
- "first_granted": "Primeira concessão",
- "last_granted": "Última concessão",
- "filter_all": "Todos",
- "filter_players": "Jogadores",
- "filter_teams": "Equipes",
- "granted_by": "Concedido por {name}",
- "source_manual": "Concedido manualmente",
- "source_tournament": "Colocação em torneio",
- "source_season": "Automação de temporada",
- "revoke": "Revogar",
- "confirm_revoke": {
- "title": "Revogar esta premiação?",
- "description": "{name} não terá mais esta premiação. Isso não pode ser desfeito."
+ "not_found_title": "Premiação não encontrada",
+ "not_found": "Esta premiação não existe ou foi excluída.",
+ "holders_section": "Detentores",
+ "no_holders_title": "Nenhum detentor ainda",
+ "no_holders": "Ninguém recebeu esta premiação.",
+ "total_holders": "Concessões",
+ "unique_players": "Jogadores",
+ "unique_teams": "Equipes",
+ "first_granted": "Primeira concessão",
+ "last_granted": "Última concessão",
+ "filter_all": "Todos",
+ "filter_players": "Jogadores",
+ "filter_teams": "Equipes",
+ "granted_by": "Concedido por {name}",
+ "source_manual": "Concedido manualmente",
+ "source_tournament": "Colocação em torneio",
+ "source_season": "Automação de temporada",
+ "revoke": "Revogar",
+ "confirm_revoke": {
+ "title": "Revogar esta premiação?",
+ "description": "{name} não terá mais esta premiação. Isso não pode ser desfeito."
}
},
"system_media_server": {
@@ -4568,8 +4568,8 @@
"add_player": "Adicionar jogador",
"ineligible": {
"on_this_roster": "Já está neste elenco.",
- "on_other_team": "Já inscrito na equipe {team} neste torneio.",
- "invite_pending": "Você já convidou — aguardando resposta."
+ "on_other_team": "Já inscrito na equipe {team} neste torneio.",
+ "invite_pending": "Você já convidou — aguardando resposta."
},
"already_in_tournament": "Esse jogador já está em um time neste torneio.",
"pending_invites": "Convites pendentes",
@@ -5066,8 +5066,7 @@
"game_mode": {
"title": "Modo de jogo",
"none": "Competitivo (sem modo)",
- "description": "Carrega um conjunto de plugins e variáveis de console no servidor da partida.",
- "not_competitive_safe": "Este modo não está marcado como seguro para o jogo competitivo. Ele ainda conta para o ELO — marque-o como seguro para competitivo no próprio modo se essa for a intenção."
+ "description": "Carrega um conjunto de plugins e variáveis de console no servidor da partida."
}
},
"schedule": {
@@ -6824,8 +6823,7 @@
"step_mode": "Modo",
"mode_description": "Como a partida é jogada. Deixe em Competitivo para uma partida normal, ou escolha um modo para carregar seus plugins no servidor.",
"mode_none": "Competitivo",
- "mode_none_hint": "Regras padrão. Conta para o ELO e os rankings.",
- "mode_empty": "Nenhum modo de jogo foi configurado ainda. Um administrador pode adicioná-los nas Configurações."
+ "mode_none_hint": "Regras padrão. Conta para o ELO e os rankings."
},
"host": "O host",
"invite": {
@@ -7821,16 +7819,16 @@
"toast_kind": "Voz",
"toast_joined": "entrou",
"toast_started_video": "iniciou vídeo em",
- "floating_title": "Chamada"
- }
- },
- "media": {
- "device": {
- "system_default": "Padrão do sistema",
- "selected": "Dispositivo selecionado",
- "following_system": "Segue a configuração do sistema",
- "device": "Dispositivo",
- "camera": "Câmera"
+ "floating_title": "Chamada"
+ }
+ },
+ "media": {
+ "device": {
+ "system_default": "Padrão do sistema",
+ "selected": "Dispositivo selecionado",
+ "following_system": "Segue a configuração do sistema",
+ "device": "Dispositivo",
+ "camera": "Câmera"
}
},
"game_modes": {
@@ -7840,7 +7838,6 @@
"description": "Descrição",
"competitive_safe": "Seguro para jogo competitivo",
"competitive_safe_description": "Se este modo pode ser usado por uma partida ranqueada ou de matchmaking.",
- "competitive_safe_warning": "Este modo só será oferecido em partidas casual. Servidores ranqueados nunca herdam um modo, então o matchmaking sempre começa com um conjunto de plugins limpo.",
"plugins": "Plugins",
"plugins_description": "Carregados na ordem exibida, depois de tudo que foi colocado à mão em custom-plugins.",
"no_plugins": "Nenhum plugin de jogo no catálogo ainda. Sincronize o registro e instale um primeiro.",
@@ -7851,7 +7848,6 @@
"extra_game_params_description": "Anexados à linha de comando do servidor ao iniciar.",
"save": "Salvar modo",
"saved": "Modo de jogo salvo",
- "archive": "Arquivar",
"archived": "Modo de jogo arquivado",
"runtime_none": "Estes plugins não têm nenhum framework em comum, então este modo não pode rodar em lugar nenhum. Remova o que for do outro framework.",
"runtime_only": "Roda apenas em {runtime}, porque é o único framework para o qual todos estes plugins existem."
diff --git a/i18n/locales/ru_RU.json b/i18n/locales/ru_RU.json
index 2e50bc440..98593d317 100644
--- a/i18n/locales/ru_RU.json
+++ b/i18n/locales/ru_RU.json
@@ -1394,8 +1394,8 @@
"manual_caption": "вне каталога",
"modes": "Режимы игры",
"modes_caption": "создано",
- "modes_unranked": "Без рейтинга",
- "modes_unranked_caption": "режимы без ELO"
+ "modes_unranked": "Не для драфта",
+ "modes_unranked_caption": "режимы, скрытые в драфт-лобби"
}
},
"tournaments": {
@@ -5204,8 +5204,7 @@
"game_mode": {
"title": "Режим игры",
"none": "Competitive (без режима)",
- "description": "Загружает набор плагинов и консольных переменных на сервер матча.",
- "not_competitive_safe": "Этот режим не отмечен как подходящий для competitive. Он всё равно влияет на ELO — отметь его как подходящий для competitive в самом режиме, если так и задумано."
+ "description": "Загружает набор плагинов и консольных переменных на сервер матча."
}
},
"schedule": {
@@ -7056,8 +7055,7 @@
"step_mode": "Режим",
"mode_description": "Как проходит матч. Для обычного матча оставь Competitive или выбери режим, чтобы загрузить его плагины на сервер.",
"mode_none": "Competitive",
- "mode_none_hint": "Стандартные правила. Влияет на ELO и таблицы лидеров.",
- "mode_empty": "Режимы игры ещё не настроены. Администратор может добавить их в настройках."
+ "mode_none_hint": "Стандартные правила. Влияет на ELO и таблицы лидеров."
},
"host": "Хост",
"invite": {
@@ -8206,7 +8204,6 @@
"description": "Описание",
"competitive_safe": "Подходит для competitive",
"competitive_safe_description": "Можно ли использовать этот режим в рейтинговых матчах и матчмейкинге.",
- "competitive_safe_warning": "Этот режим будет предлагаться только в casual-матчах. Рейтинговые серверы никогда не наследуют режим, поэтому матчмейкинг всегда стартует с чистым набором плагинов.",
"plugins": "Плагины",
"plugins_description": "Загружаются в показанном порядке, после всего, что вручную положено в custom-plugins.",
"no_plugins": "В каталоге пока нет игровых плагинов. Сначала синхронизируй реестр и установи хотя бы один.",
@@ -8217,7 +8214,6 @@
"extra_game_params_description": "Добавляются в командную строку сервера при запуске.",
"save": "Сохранить режим",
"saved": "Режим игры сохранён",
- "archive": "В архив",
"archived": "Режим игры отправлен в архив",
"runtime_none": "У этих плагинов нет общего фреймворка, поэтому этот режим нигде не запустится. Удали тот, который собран под другой фреймворк.",
"runtime_only": "Работает только на {runtime} — это единственный фреймворк, под который выпущены все эти плагины."
diff --git a/i18n/locales/sv_SE.json b/i18n/locales/sv_SE.json
index 4a409f1de..a8765dd04 100644
--- a/i18n/locales/sv_SE.json
+++ b/i18n/locales/sv_SE.json
@@ -1394,8 +1394,8 @@
"manual_caption": "utanför katalogen",
"modes": "Spellägen",
"modes_caption": "definierade",
- "modes_unranked": "Orankade",
- "modes_unranked_caption": "lägen som hoppar över ELO"
+ "modes_unranked": "Inte draft-säkra",
+ "modes_unranked_caption": "lägen dolda i draft-lobbyer"
}
},
"tournaments": {
@@ -5204,8 +5204,7 @@
"game_mode": {
"title": "Spelläge",
"none": "Competitive (inget läge)",
- "description": "Laddar en uppsättning tillägg och konsolvariabler på matchservern.",
- "not_competitive_safe": "Det här läget är inte markerat som säkert för competitive. Det räknas ändå mot ELO — markera det som säkert för competitive i själva läget om det är meningen."
+ "description": "Laddar en uppsättning tillägg och konsolvariabler på matchservern."
}
},
"schedule": {
@@ -7056,8 +7055,7 @@
"step_mode": "Läge",
"mode_description": "Hur matchen spelas. Låt den stå på Competitive för en vanlig match, eller välj ett läge för att ladda dess tillägg på servern.",
"mode_none": "Competitive",
- "mode_none_hint": "Standardregler. Räknas mot ELO och topplistor.",
- "mode_empty": "Inga spellägen är uppsatta än. En administratör kan lägga till dem under Inställningar."
+ "mode_none_hint": "Standardregler. Räknas mot ELO och topplistor."
},
"host": "Värden",
"invite": {
@@ -8206,7 +8204,6 @@
"description": "Beskrivning",
"competitive_safe": "Säkert för competitive",
"competitive_safe_description": "Om det här läget får användas av en rankad match eller matchmaking.",
- "competitive_safe_warning": "Det här läget erbjuds bara i casual-matcher. Rankade servrar ärver aldrig ett läge, så matchmaking startar alltid med en ren uppsättning tillägg.",
"plugins": "Tillägg",
"plugins_description": "Laddas i den ordning som visas, efter allt som lagts för hand i custom-plugins.",
"no_plugins": "Inga speltillägg i katalogen än. Synka registry och installera ett först.",
@@ -8217,7 +8214,6 @@
"extra_game_params_description": "Läggs till på serverns kommandorad när den startar.",
"save": "Spara läge",
"saved": "Spelläge sparat",
- "archive": "Arkivera",
"archived": "Spelläge arkiverat",
"runtime_none": "De här tilläggen har inget gemensamt ramverk, så det här läget kan inte köras någonstans. Ta bort det som riktar sig mot det andra ramverket.",
"runtime_only": "Körs bara på {runtime}, eftersom det är det enda ramverk som alla tillägg här finns för."
diff --git a/i18n/locales/tr_TR.json b/i18n/locales/tr_TR.json
index d5ecb848d..30a90e055 100644
--- a/i18n/locales/tr_TR.json
+++ b/i18n/locales/tr_TR.json
@@ -1394,8 +1394,8 @@
"manual_caption": "dizin dışı",
"modes": "Oyun modları",
"modes_caption": "tanımlı",
- "modes_unranked": "Dereceli değil",
- "modes_unranked_caption": "ELO'yu atlayan modlar"
+ "modes_unranked": "Draft'a uygun değil",
+ "modes_unranked_caption": "draft lobilerinde gizlenen modlar"
}
},
"tournaments": {
@@ -5204,8 +5204,7 @@
"game_mode": {
"title": "Oyun Modu",
"none": "Rekabetçi (mod yok)",
- "description": "Maç sunucusuna bir dizi eklenti ve konsol değişkeni yükler.",
- "not_competitive_safe": "Bu mod rekabetçi oyuna uygun olarak işaretlenmemiş. Yine de ELO'ya sayılır — böyle olması isteniyorsa modun kendisinde rekabetçiye uygun olarak işaretle."
+ "description": "Maç sunucusuna bir dizi eklenti ve konsol değişkeni yükler."
}
},
"schedule": {
@@ -7056,8 +7055,7 @@
"step_mode": "Mod",
"mode_description": "Maçın nasıl oynanacağı. Normal bir maç için Rekabetçi'de bırak ya da eklentilerini sunucuya yüklemek için bir mod seç.",
"mode_none": "Rekabetçi",
- "mode_none_hint": "Standart kurallar. ELO'ya ve liderlik tablolarına sayılır.",
- "mode_empty": "Henüz kurulu bir oyun modu yok. Bir yönetici bunları Ayarlar'dan ekleyebilir."
+ "mode_none_hint": "Standart kurallar. ELO'ya ve liderlik tablolarına sayılır."
},
"host": "Ev sahibi",
"invite": {
@@ -8206,7 +8204,6 @@
"description": "Açıklama",
"competitive_safe": "Rekabetçi oyuna uygun",
"competitive_safe_description": "Bu modun dereceli veya eşleştirme maçlarında kullanılıp kullanılamayacağı.",
- "competitive_safe_warning": "Bu mod yalnızca casual maçlarda sunulur. Dereceli sunucular hiçbir zaman bir modu devralmaz, bu yüzden eşleştirme her zaman temiz bir eklenti setiyle başlar.",
"plugins": "Eklentiler",
"plugins_description": "Gösterilen sırayla, custom-plugins içine elle konulanlardan sonra yüklenir.",
"no_plugins": "Katalogda henüz oyun eklentisi yok. Önce kayıt defterini eşitle ve bir tane kur.",
@@ -8217,7 +8214,6 @@
"extra_game_params_description": "Sunucu başlarken komut satırına eklenir.",
"save": "Modu Kaydet",
"saved": "Oyun modu kaydedildi",
- "archive": "Arşivle",
"archived": "Oyun modu arşivlendi",
"runtime_none": "Bu eklentilerin ortak bir framework'ü yok, bu yüzden bu mod hiçbir yerde çalışamaz. Diğer framework'ü hedefleyen eklentiyi kaldır.",
"runtime_only": "Yalnızca {runtime} üzerinde çalışır, çünkü buradaki tüm eklentilerin çıktığı tek framework o."
diff --git a/i18n/locales/uk_UA.json b/i18n/locales/uk_UA.json
index f89da0542..e3b1e6c6a 100644
--- a/i18n/locales/uk_UA.json
+++ b/i18n/locales/uk_UA.json
@@ -1394,8 +1394,8 @@
"manual_caption": "поза каталогом",
"modes": "Режими гри",
"modes_caption": "створено",
- "modes_unranked": "Без рейтингу",
- "modes_unranked_caption": "режими без ELO"
+ "modes_unranked": "Не для драфту",
+ "modes_unranked_caption": "режими, приховані в драфт-лобі"
}
},
"tournaments": {
@@ -5204,8 +5204,7 @@
"game_mode": {
"title": "Режим гри",
"none": "Competitive (без режиму)",
- "description": "Завантажує набір плагінів і консольних змінних на сервер матчу.",
- "not_competitive_safe": "Цей режим не позначено як придатний для competitive. Він усе одно впливає на ELO — познач його як придатний для competitive у самому режимі, якщо так і задумано."
+ "description": "Завантажує набір плагінів і консольних змінних на сервер матчу."
}
},
"schedule": {
@@ -7056,8 +7055,7 @@
"step_mode": "Режим",
"mode_description": "Як проходить матч. Для звичайного матчу залиш Competitive або обери режим, щоб завантажити його плагіни на сервер.",
"mode_none": "Competitive",
- "mode_none_hint": "Стандартні правила. Впливає на ELO і таблиці лідерів.",
- "mode_empty": "Режими гри ще не налаштовані. Адміністратор може додати їх у налаштуваннях."
+ "mode_none_hint": "Стандартні правила. Впливає на ELO і таблиці лідерів."
},
"host": "Хост",
"invite": {
@@ -8206,7 +8204,6 @@
"description": "Опис",
"competitive_safe": "Підходить для competitive",
"competitive_safe_description": "Чи можна використовувати цей режим у рейтингових матчах і матчмейкінгу.",
- "competitive_safe_warning": "Цей режим пропонуватиметься лише в casual-матчах. Рейтингові сервери ніколи не успадковують режим, тож матчмейкінг завжди стартує з чистим набором плагінів.",
"plugins": "Плагіни",
"plugins_description": "Завантажуються в показаному порядку, після всього, що вручну покладено в custom-plugins.",
"no_plugins": "У каталозі ще немає ігрових плагінів. Спочатку синхронізуй реєстр і встанови хоча б один.",
@@ -8217,7 +8214,6 @@
"extra_game_params_description": "Додаються до командного рядка сервера під час запуску.",
"save": "Зберегти режим",
"saved": "Режим гри збережено",
- "archive": "В архів",
"archived": "Режим гри надіслано в архів",
"runtime_none": "У цих плагінів немає спільного фреймворку, тож цей режим ніде не запуститься. Видали той, що зібраний під інший фреймворк.",
"runtime_only": "Працює лише на {runtime} — це єдиний фреймворк, під який випущені всі ці плагіни."
diff --git a/i18n/locales/zh_Hans.json b/i18n/locales/zh_Hans.json
index 3e3959a9b..cfef344e3 100644
--- a/i18n/locales/zh_Hans.json
+++ b/i18n/locales/zh_Hans.json
@@ -1394,8 +1394,8 @@
"manual_caption": "目录之外",
"modes": "游戏模式",
"modes_caption": "已定义",
- "modes_unranked": "非排位",
- "modes_unranked_caption": "不计入 ELO 的模式"
+ "modes_unranked": "不适用于选人",
+ "modes_unranked_caption": "在选人大厅中隐藏的模式"
}
},
"tournaments": {
@@ -5204,8 +5204,7 @@
"game_mode": {
"title": "游戏模式",
"none": "竞技(无模式)",
- "description": "在比赛服务器上加载一组插件和控制台变量。",
- "not_competitive_safe": "此模式未标记为可用于竞技。它仍会计入 ELO——如果这是有意为之,请在模式本身中将其标记为可用于竞技。"
+ "description": "在比赛服务器上加载一组插件和控制台变量。"
}
},
"schedule": {
@@ -7056,8 +7055,7 @@
"step_mode": "模式",
"mode_description": "比赛的玩法。普通比赛保持竞技即可,或选择一个模式以在服务器上加载其插件。",
"mode_none": "竞技",
- "mode_none_hint": "标准规则。计入 ELO 和排行榜。",
- "mode_empty": "还没有配置任何游戏模式。管理员可以在设置中添加。"
+ "mode_none_hint": "标准规则。计入 ELO 和排行榜。"
},
"host": "房主",
"invite": {
@@ -8206,7 +8204,6 @@
"description": "描述",
"competitive_safe": "可用于竞技对战",
"competitive_safe_description": "此模式是否可用于排位或匹配比赛。",
- "competitive_safe_warning": "此模式只会在休闲比赛中提供。排位服务器不会继承模式,因此匹配始终以干净的插件集启动。",
"plugins": "插件",
"plugins_description": "按显示顺序加载,位于手动放入 custom-plugins 的内容之后。",
"no_plugins": "目录中还没有游戏插件。请先同步插件源并安装一个。",
@@ -8217,7 +8214,6 @@
"extra_game_params_description": "服务器启动时追加到命令行。",
"save": "保存模式",
"saved": "游戏模式已保存",
- "archive": "归档",
"archived": "游戏模式已归档",
"runtime_none": "这些插件没有共同的框架,因此该模式无法在任何地方运行。请移除面向另一种框架的那个插件。",
"runtime_only": "仅在 {runtime} 上运行,因为这是这里所有插件都发布了版本的唯一框架。"
diff --git a/i18n/locales/zh_Hant.json b/i18n/locales/zh_Hant.json
index 6c20f338d..b1c420afb 100644
--- a/i18n/locales/zh_Hant.json
+++ b/i18n/locales/zh_Hant.json
@@ -1394,8 +1394,8 @@
"manual_caption": "目錄之外",
"modes": "遊戲模式",
"modes_caption": "已定義",
- "modes_unranked": "非排名",
- "modes_unranked_caption": "不計入 ELO 的模式"
+ "modes_unranked": "不適用於選人",
+ "modes_unranked_caption": "在選人大廳中隱藏的模式"
}
},
"tournaments": {
@@ -5204,8 +5204,7 @@
"game_mode": {
"title": "遊戲模式",
"none": "競技(無模式)",
- "description": "在比賽伺服器上載入一組外掛與主控台變數。",
- "not_competitive_safe": "此模式未標記為可用於競技。它仍會計入 ELO——如果這是有意為之,請在模式本身中將其標記為可用於競技。"
+ "description": "在比賽伺服器上載入一組外掛與主控台變數。"
}
},
"schedule": {
@@ -7056,8 +7055,7 @@
"step_mode": "模式",
"mode_description": "比賽的玩法。一般比賽保持競技即可,或選擇一個模式以在伺服器上載入其外掛。",
"mode_none": "競技",
- "mode_none_hint": "標準規則。計入 ELO 與排行榜。",
- "mode_empty": "尚未設定任何遊戲模式。管理員可以在設定中新增。"
+ "mode_none_hint": "標準規則。計入 ELO 與排行榜。"
},
"host": "房主",
"invite": {
@@ -8206,7 +8204,6 @@
"description": "描述",
"competitive_safe": "可用於競技對戰",
"competitive_safe_description": "此模式是否可用於排名或配對比賽。",
- "competitive_safe_warning": "此模式只會在休閒比賽中提供。排名伺服器不會繼承模式,因此配對永遠以乾淨的外掛組合啟動。",
"plugins": "外掛",
"plugins_description": "依顯示順序載入,位於手動放入 custom-plugins 的內容之後。",
"no_plugins": "目錄中尚無遊戲外掛。請先同步外掛來源並安裝一個。",
@@ -8217,7 +8214,6 @@
"extra_game_params_description": "伺服器啟動時附加到命令列。",
"save": "儲存模式",
"saved": "已儲存遊戲模式",
- "archive": "封存",
"archived": "已封存遊戲模式",
"runtime_none": "這些外掛沒有共同的框架,因此此模式無法在任何地方執行。請移除面向另一種框架的那個外掛。",
"runtime_only": "僅在 {runtime} 上執行,因為這是這裡所有外掛都有推出版本的唯一框架。"
diff --git a/nuxt.config.ts b/nuxt.config.ts
index a58c10861..93ccdc4c0 100644
--- a/nuxt.config.ts
+++ b/nuxt.config.ts
@@ -217,7 +217,7 @@ export default defineNuxtConfig({
// Adds `push` / `notificationclick` handlers to the generated service
// worker without giving up the default generateSW strategy for a custom
// SW file. Served unhashed from public/, so bump the ?v= on any change.
- importScripts: ["/sw-push.js?v=3"],
+ importScripts: ["/sw-push.js?v=4"],
cleanupOutdatedCaches: true,
maximumFileSizeToCacheInBytes: 10 * 1024 * 1024,
// Do not precache every Nuxt chunk during service-worker install.
diff --git a/pages/dedicated-servers/[id].vue b/pages/dedicated-servers/[id].vue
index 55ebb6e3b..ddd77c195 100644
--- a/pages/dedicated-servers/[id].vue
+++ b/pages/dedicated-servers/[id].vue
@@ -366,6 +366,7 @@ export default {
plugin_runtime: true,
rcon_status: true,
game_server_node_id: true,
+ game_mode_id: true,
connection_link: true,
connection_string: true,
offline_at: true,
diff --git a/pages/plugins/[slug].vue b/pages/plugins/[slug].vue
index 772d8a96f..3eff5ff51 100644
--- a/pages/plugins/[slug].vue
+++ b/pages/plugins/[slug].vue
@@ -37,6 +37,8 @@ import {
FolderOpen,
Download,
Wrench,
+ Loader2,
+ RefreshCw,
} from "lucide-vue-next";
definePageMeta({
@@ -285,8 +287,13 @@ definePageMeta({