mirror of
				https://github.com/strapi/strapi.git
				synced 2025-11-03 19:36:20 +00:00 
			
		
		
		
	Merge branch 'features/deits' into deits/transfer-push
This commit is contained in:
		
						commit
						75d6b256f0
					
				@ -458,7 +458,7 @@ const ProfilePage = () => {
 | 
			
		||||
                                    href="https://docs.strapi.io/developer-docs/latest/development/admin-customization.html#locales"
 | 
			
		||||
                                  >
 | 
			
		||||
                                    {formatMessage({
 | 
			
		||||
                                      id: 'Settings.profile.form.section.experience.documentation',
 | 
			
		||||
                                      id: 'Settings.profile.form.section.experience.here',
 | 
			
		||||
                                      defaultMessage: 'here',
 | 
			
		||||
                                    })}
 | 
			
		||||
                                  </DocumentationLink>
 | 
			
		||||
 | 
			
		||||
@ -125,11 +125,10 @@
 | 
			
		||||
  "Settings.permissions.users.tabs.label": "Permisos de pestanyes",
 | 
			
		||||
  "Settings.profile.form.notify.data.loaded": "S'han carregat les dades del vostre perfil",
 | 
			
		||||
  "Settings.profile.form.section.experience.clear.select": "Esborrar l'idioma d'interfície seleccionat",
 | 
			
		||||
  "Settings.profile.form.section.experience.documentation": "documentació",
 | 
			
		||||
  "Settings.profile.form.section.experience.here": "aquí",
 | 
			
		||||
  "Settings.profile.form.section.experience.here": "documentació",
 | 
			
		||||
  "Settings.profile.form.section.experience.interfaceLanguage": "Idioma d'interfície",
 | 
			
		||||
  "Settings.profile.form.section.experience.interfaceLanguage.hint": "Això només mostrarà la vostra pròpia interfície en l'idioma escollit.",
 | 
			
		||||
  "Settings.profile.form.section.experience.interfaceLanguageHelp": "La selecció canviarà l'idioma de la interfície només per a vosaltres. Consulteu aquesta {documentation} perquè altres idiomes estiguin disponibles per al vostre ordinador.",
 | 
			
		||||
  "Settings.profile.form.section.experience.interfaceLanguageHelp": "La selecció canviarà l'idioma de la interfície només per a vosaltres. Consulteu aquesta {here} perquè altres idiomes estiguin disponibles per al vostre ordinador.",
 | 
			
		||||
  "Settings.profile.form.section.experience.mode.hint": "Mostra la vostra interfície en el mode escollit.",
 | 
			
		||||
  "Settings.profile.form.section.experience.mode.label": "Mode d'interfície",
 | 
			
		||||
  "Settings.profile.form.section.experience.mode.option-label": "mode {nom}",
 | 
			
		||||
 | 
			
		||||
@ -123,10 +123,10 @@
 | 
			
		||||
  "Settings.permissions.users.tabs.label": "Tabs Tilladelser",
 | 
			
		||||
  "Settings.profile.form.notify.data.loaded": "Dine profildata er blevet hentet",
 | 
			
		||||
  "Settings.profile.form.section.experience.clear.select": "Nulstil det valgte interface sprog",
 | 
			
		||||
  "Settings.profile.form.section.experience.documentation": "dokumentation",
 | 
			
		||||
  "Settings.profile.form.section.experience.here": "dokumentation",
 | 
			
		||||
  "Settings.profile.form.section.experience.interfaceLanguage": "Interface sprog",
 | 
			
		||||
  "Settings.profile.form.section.experience.interfaceLanguage.hint": "Dette vil kun vise dit eget interface i det valgte sprog.",
 | 
			
		||||
  "Settings.profile.form.section.experience.interfaceLanguageHelp": "Valget vil kun ændre sproget for dig. Referér venligst til dette {documentation} for at gøre andre sprog tilgængelige for dit hold.",
 | 
			
		||||
  "Settings.profile.form.section.experience.interfaceLanguageHelp": "Valget vil kun ændre sproget for dig. Referér venligst til dette {here} for at gøre andre sprog tilgængelige for dit hold.",
 | 
			
		||||
  "Settings.profile.form.section.experience.title": "Oplevelse",
 | 
			
		||||
  "Settings.profile.form.section.helmet.title": "Bruger profil",
 | 
			
		||||
  "Settings.profile.form.section.profile.page.title": "Profil side",
 | 
			
		||||
 | 
			
		||||
@ -123,10 +123,10 @@
 | 
			
		||||
  "Settings.permissions.users.tabs.label": "Permisos de pestañas",
 | 
			
		||||
  "Settings.profile.form.notify.data.loaded": "Se han cargado los datos de tu perfil",
 | 
			
		||||
  "Settings.profile.form.section.experience.clear.select": "Borrar el idioma de interfaz seleccionado",
 | 
			
		||||
  "Settings.profile.form.section.experience.documentation": "documentación",
 | 
			
		||||
  "Settings.profile.form.section.experience.here": "documentación",
 | 
			
		||||
  "Settings.profile.form.section.experience.interfaceLanguage": "Idioma de interfaz",
 | 
			
		||||
  "Settings.profile.form.section.experience.interfaceLanguage.hint": "Esto solo mostrará su propia interfaz en el idioma elegido.",
 | 
			
		||||
  "Settings.profile.form.section.experience.interfaceLanguageHelp": "La selección cambiará el idioma de la interfaz solo para usted. Consulte esta {documentation} para que otros idiomas estén disponibles para su equipo.",
 | 
			
		||||
  "Settings.profile.form.section.experience.interfaceLanguageHelp": "La selección cambiará el idioma de la interfaz solo para usted. Consulte esta {here} para que otros idiomas estén disponibles para su equipo.",
 | 
			
		||||
  "Settings.profile.form.section.experience.title": "Experiencia",
 | 
			
		||||
  "Settings.profile.form.section.helmet.title": "Perfil de usuario",
 | 
			
		||||
  "Settings.profile.form.section.profile.page.title": "Página de perfil",
 | 
			
		||||
 | 
			
		||||
@ -123,10 +123,10 @@
 | 
			
		||||
  "Settings.permissions.users.tabs.label": "Onglet Autorisations",
 | 
			
		||||
  "Settings.profile.form.notify.data.loaded": "Les données de votre profil ont été chargées",
 | 
			
		||||
  "Settings.profile.form.section.experience.clear.select": "Vider la langue de l'interface sélectionnée",
 | 
			
		||||
  "Settings.profile.form.section.experience.documentation": "documentation",
 | 
			
		||||
  "Settings.profile.form.section.experience.here": "documentation",
 | 
			
		||||
  "Settings.profile.form.section.experience.interfaceLanguage": "Langue de l'interface",
 | 
			
		||||
  "Settings.profile.form.section.experience.interfaceLanguage.hint": "Cela affichera seulement votre propre interface dans la langue sélectionnée",
 | 
			
		||||
  "Settings.profile.form.section.experience.interfaceLanguageHelp": "La sélection changera la langue de l'interface uniquement pour vous. Veuillez vous référer à cette {documentation} pour rendre d'autres langues disponibles pour votre équipe.",
 | 
			
		||||
  "Settings.profile.form.section.experience.interfaceLanguageHelp": "La sélection changera la langue de l'interface uniquement pour vous. Veuillez vous référer à cette {here} pour rendre d'autres langues disponibles pour votre équipe.",
 | 
			
		||||
  "Settings.profile.form.section.experience.title": "Expérience",
 | 
			
		||||
  "Settings.profile.form.section.helmet.title": "Profil utilisateur",
 | 
			
		||||
  "Settings.profile.form.section.profile.page.title": "Page de profil",
 | 
			
		||||
 | 
			
		||||
@ -123,10 +123,10 @@
 | 
			
		||||
  "Settings.permissions.users.tabs.label": "Hozzáférések Tab",
 | 
			
		||||
  "Settings.profile.form.notify.data.loaded": "Profiladatok betöltve",
 | 
			
		||||
  "Settings.profile.form.section.experience.clear.select": "A kiválasztott felület nyelvének törlése",
 | 
			
		||||
  "Settings.profile.form.section.experience.documentation": "dokumentáció",
 | 
			
		||||
  "Settings.profile.form.section.experience.here": "dokumentáció",
 | 
			
		||||
  "Settings.profile.form.section.experience.interfaceLanguage": "A felület nyelve",
 | 
			
		||||
  "Settings.profile.form.section.experience.interfaceLanguage.hint": "Ez csak a saját felületét jeleníti meg a kiválasztott nyelven.",
 | 
			
		||||
  "Settings.profile.form.section.experience.interfaceLanguageHelp": "A kiválasztás csak az Ön számára módosítja a felület nyelvét. Kérjük, olvassa el ezt a {document}, hogy más nyelveket a csapata számára is elérhetővé tehesse.",
 | 
			
		||||
  "Settings.profile.form.section.experience.interfaceLanguageHelp": "A kiválasztás csak az Ön számára módosítja a felület nyelvét. Kérjük, olvassa el ezt a {here}, hogy más nyelveket a csapata számára is elérhetővé tehesse.",
 | 
			
		||||
  "Settings.profile.form.section.experience.title": "Tapasztalat",
 | 
			
		||||
  "Settings.profile.form.section.helmet.title": "Felhasználói profil",
 | 
			
		||||
  "Settings.profile.form.section.profile.page.title": "Profil oldal",
 | 
			
		||||
 | 
			
		||||
@ -123,10 +123,10 @@
 | 
			
		||||
  "Settings.permissions.users.tabs.label": "Tabs Permissions",
 | 
			
		||||
  "Settings.profile.form.notify.data.loaded": "Your profile data has been loaded",
 | 
			
		||||
  "Settings.profile.form.section.experience.clear.select": "Clear the interface language selected",
 | 
			
		||||
  "Settings.profile.form.section.experience.documentation": "documentation",
 | 
			
		||||
  "Settings.profile.form.section.experience.here": "documentation",
 | 
			
		||||
  "Settings.profile.form.section.experience.interfaceLanguage": "Interface language",
 | 
			
		||||
  "Settings.profile.form.section.experience.interfaceLanguage.hint": "This will only display your own interface in the chosen language.",
 | 
			
		||||
  "Settings.profile.form.section.experience.interfaceLanguageHelp": "Selection will change the interface language only for you. Please refer to this {documentation} to make other languages available for your team.",
 | 
			
		||||
  "Settings.profile.form.section.experience.interfaceLanguageHelp": "Selection will change the interface language only for you. Please refer to this {here} to make other languages available for your team.",
 | 
			
		||||
  "Settings.profile.form.section.experience.title": "Experience",
 | 
			
		||||
  "Settings.profile.form.section.helmet.title": "ユーザープロフィール",
 | 
			
		||||
  "Settings.profile.form.section.profile.page.title": "プロフィールページ",
 | 
			
		||||
 | 
			
		||||
@ -177,10 +177,10 @@
 | 
			
		||||
  "Settings.permissions.users.strapi-author": "Auteur",
 | 
			
		||||
  "Settings.profile.form.notify.data.loaded": "Je profielgegevens zijn geladen",
 | 
			
		||||
  "Settings.profile.form.section.experience.clear.select": "Wis de geselecteerde interfacetaal",
 | 
			
		||||
  "Settings.profile.form.section.experience.documentation": "documentatie",
 | 
			
		||||
  "Settings.profile.form.section.experience.here": "documentatie",
 | 
			
		||||
  "Settings.profile.form.section.experience.interfaceLanguage": "Interfacetaal",
 | 
			
		||||
  "Settings.profile.form.section.experience.interfaceLanguage.hint": "Hierdoor wordt alleen je eigen interface in de gekozen taal weergegeven.",
 | 
			
		||||
  "Settings.profile.form.section.experience.interfaceLanguageHelp": "Selectie zal de interfacetaal alleen voor jou veranderen. Raadpleeg deze {documentation} om andere talen beschikbaar te maken voor uw team.",
 | 
			
		||||
  "Settings.profile.form.section.experience.interfaceLanguageHelp": "Selectie zal de interfacetaal alleen voor jou veranderen. Raadpleeg deze {here} om andere talen beschikbaar te maken voor uw team.",
 | 
			
		||||
  "Settings.profile.form.section.experience.mode.label": "Interface modus",
 | 
			
		||||
  "Settings.profile.form.section.experience.mode.hint": "Toont uw interface in de gekozen modus.",
 | 
			
		||||
  "Settings.profile.form.section.experience.mode.option-label": "{name} modus",
 | 
			
		||||
 | 
			
		||||
@ -132,7 +132,7 @@
 | 
			
		||||
  "Settings.permissions.users.strapi-author": "作者",
 | 
			
		||||
  "Settings.profile.form.notify.data.loaded": "你的个人数据已经加载完成",
 | 
			
		||||
  "Settings.profile.form.section.experience.clear.select": "清除已选择的界面语言",
 | 
			
		||||
  "Settings.profile.form.section.experience.documentation": "文档",
 | 
			
		||||
  "Settings.profile.form.section.experience.here": "文档",
 | 
			
		||||
  "Settings.profile.form.section.experience.interfaceLanguage": "界面语言",
 | 
			
		||||
  "Settings.profile.form.section.experience.interfaceLanguage.hint": "将会用所选择的语言显示你的界面",
 | 
			
		||||
  "Settings.profile.form.section.experience.interfaceLanguageHelp": "当前的语言选择只会更改你当前帐号界面语言。 请参考此 {here} 为你的团队提供其他语言。",
 | 
			
		||||
 | 
			
		||||
@ -177,10 +177,10 @@
 | 
			
		||||
  "Settings.permissions.users.strapi-author": "作者",
 | 
			
		||||
  "Settings.profile.form.notify.data.loaded": "您的個人檔案資料已經載入",
 | 
			
		||||
  "Settings.profile.form.section.experience.clear.select": "清除已選的介面語言",
 | 
			
		||||
  "Settings.profile.form.section.experience.here": "here",
 | 
			
		||||
  "Settings.profile.form.section.experience.here": "此文檔",
 | 
			
		||||
  "Settings.profile.form.section.experience.interfaceLanguage": "介面語言",
 | 
			
		||||
  "Settings.profile.form.section.experience.interfaceLanguage.hint": "將會用所選擇的語言顯示您的介面",
 | 
			
		||||
  "Settings.profile.form.section.experience.interfaceLanguageHelp": "只有您的介面會變為所選擇的語言。如果要為您的團隊提供其他語言,請參考此 {documentation}。",
 | 
			
		||||
  "Settings.profile.form.section.experience.interfaceLanguageHelp": "只有您的介面會變為所選擇的語言。如果要為您的團隊提供其他語言,請參考{here}。",
 | 
			
		||||
  "Settings.profile.form.section.experience.mode.label": "介面模式",
 | 
			
		||||
  "Settings.profile.form.section.experience.mode.hint": "在選擇的模式中顯示您的介面。",
 | 
			
		||||
  "Settings.profile.form.section.experience.mode.option-label": "{name} 模式",
 | 
			
		||||
 | 
			
		||||
@ -83,6 +83,7 @@
 | 
			
		||||
    "jsonwebtoken": "8.5.1",
 | 
			
		||||
    "koa-compose": "4.1.0",
 | 
			
		||||
    "koa-passport": "5.0.0",
 | 
			
		||||
    "koa2-ratelimit": "^1.1.2",
 | 
			
		||||
    "koa-static": "5.0.0",
 | 
			
		||||
    "lodash": "4.17.21",
 | 
			
		||||
    "markdown-it": "^12.3.2",
 | 
			
		||||
 | 
			
		||||
@ -10,6 +10,7 @@ const routes = require('./routes');
 | 
			
		||||
const services = require('./services');
 | 
			
		||||
const controllers = require('./controllers');
 | 
			
		||||
const contentTypes = require('./content-types');
 | 
			
		||||
const middlewares = require('./middlewares');
 | 
			
		||||
 | 
			
		||||
module.exports = {
 | 
			
		||||
  register,
 | 
			
		||||
@ -21,4 +22,5 @@ module.exports = {
 | 
			
		||||
  services,
 | 
			
		||||
  controllers,
 | 
			
		||||
  contentTypes,
 | 
			
		||||
  middlewares,
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										7
									
								
								packages/core/admin/server/middlewares/index.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										7
									
								
								packages/core/admin/server/middlewares/index.js
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,7 @@
 | 
			
		||||
'use strict';
 | 
			
		||||
 | 
			
		||||
const rateLimit = require('./rateLimit');
 | 
			
		||||
 | 
			
		||||
module.exports = {
 | 
			
		||||
  rateLimit,
 | 
			
		||||
};
 | 
			
		||||
							
								
								
									
										43
									
								
								packages/core/admin/server/middlewares/rateLimit.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										43
									
								
								packages/core/admin/server/middlewares/rateLimit.js
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,43 @@
 | 
			
		||||
'use strict';
 | 
			
		||||
 | 
			
		||||
const utils = require('@strapi/utils');
 | 
			
		||||
const { has, toLower } = require('lodash/fp');
 | 
			
		||||
 | 
			
		||||
const { RateLimitError } = utils.errors;
 | 
			
		||||
 | 
			
		||||
module.exports =
 | 
			
		||||
  (config, { strapi }) =>
 | 
			
		||||
  async (ctx, next) => {
 | 
			
		||||
    let rateLimitConfig = strapi.config.get('admin.rateLimit');
 | 
			
		||||
 | 
			
		||||
    if (!rateLimitConfig) {
 | 
			
		||||
      rateLimitConfig = {
 | 
			
		||||
        enabled: true,
 | 
			
		||||
      };
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    if (!has('enabled', rateLimitConfig)) {
 | 
			
		||||
      rateLimitConfig.enabled = true;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    if (rateLimitConfig.enabled === true) {
 | 
			
		||||
      const rateLimit = require('koa2-ratelimit').RateLimit;
 | 
			
		||||
 | 
			
		||||
      const userEmail = toLower(ctx.request.body.email) || 'unknownEmail';
 | 
			
		||||
 | 
			
		||||
      const loadConfig = {
 | 
			
		||||
        interval: { min: 5 },
 | 
			
		||||
        max: 5,
 | 
			
		||||
        prefixKey: `${userEmail}:${ctx.request.path}:${ctx.request.ip}`,
 | 
			
		||||
        handler() {
 | 
			
		||||
          throw new RateLimitError();
 | 
			
		||||
        },
 | 
			
		||||
        ...rateLimitConfig,
 | 
			
		||||
        ...config,
 | 
			
		||||
      };
 | 
			
		||||
 | 
			
		||||
      return rateLimit.middleware(loadConfig)(ctx, next);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    return next();
 | 
			
		||||
  };
 | 
			
		||||
@ -5,7 +5,10 @@ module.exports = [
 | 
			
		||||
    method: 'POST',
 | 
			
		||||
    path: '/login',
 | 
			
		||||
    handler: 'authentication.login',
 | 
			
		||||
    config: { auth: false },
 | 
			
		||||
    config: {
 | 
			
		||||
      auth: false,
 | 
			
		||||
      middlewares: ['admin::rateLimit'],
 | 
			
		||||
    },
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    method: 'POST',
 | 
			
		||||
 | 
			
		||||
@ -1,7 +1,7 @@
 | 
			
		||||
'use strict';
 | 
			
		||||
 | 
			
		||||
const createError = require('http-errors');
 | 
			
		||||
const { NotFoundError, UnauthorizedError, ForbiddenError, PayloadTooLargeError } =
 | 
			
		||||
const { NotFoundError, UnauthorizedError, ForbiddenError, PayloadTooLargeError, RateLimitError } =
 | 
			
		||||
  require('@strapi/utils').errors;
 | 
			
		||||
 | 
			
		||||
const mapErrorsAndStatus = [
 | 
			
		||||
@ -21,6 +21,10 @@ const mapErrorsAndStatus = [
 | 
			
		||||
    classError: PayloadTooLargeError,
 | 
			
		||||
    status: 413,
 | 
			
		||||
  },
 | 
			
		||||
  {
 | 
			
		||||
    classError: RateLimitError,
 | 
			
		||||
    status: 429,
 | 
			
		||||
  },
 | 
			
		||||
];
 | 
			
		||||
 | 
			
		||||
const formatApplicationError = (error) => {
 | 
			
		||||
 | 
			
		||||
@ -55,14 +55,6 @@ class ForbiddenError extends ApplicationError {
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
class PayloadTooLargeError extends ApplicationError {
 | 
			
		||||
  constructor(message, details) {
 | 
			
		||||
    super(message, details);
 | 
			
		||||
    this.name = 'PayloadTooLargeError';
 | 
			
		||||
    this.message = message || 'Entity too large';
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
class UnauthorizedError extends ApplicationError {
 | 
			
		||||
  constructor(message, details) {
 | 
			
		||||
    super(message, details);
 | 
			
		||||
@ -71,6 +63,23 @@ class UnauthorizedError extends ApplicationError {
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
class RateLimitError extends ApplicationError {
 | 
			
		||||
  constructor(message, details) {
 | 
			
		||||
    super(message, details);
 | 
			
		||||
    this.name = 'RateLimitError';
 | 
			
		||||
    this.message = message || 'Too many requests, please try again later.';
 | 
			
		||||
    this.details = details || {};
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
class PayloadTooLargeError extends ApplicationError {
 | 
			
		||||
  constructor(message, details) {
 | 
			
		||||
    super(message, details);
 | 
			
		||||
    this.name = 'PayloadTooLargeError';
 | 
			
		||||
    this.message = message || 'Entity too large';
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
class PolicyError extends ForbiddenError {
 | 
			
		||||
  constructor(message, details) {
 | 
			
		||||
    super(message, details);
 | 
			
		||||
@ -88,7 +97,8 @@ module.exports = {
 | 
			
		||||
  PaginationError,
 | 
			
		||||
  NotFoundError,
 | 
			
		||||
  ForbiddenError,
 | 
			
		||||
  PayloadTooLargeError,
 | 
			
		||||
  UnauthorizedError,
 | 
			
		||||
  RateLimitError,
 | 
			
		||||
  PayloadTooLargeError,
 | 
			
		||||
  PolicyError,
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
@ -29,7 +29,7 @@
 | 
			
		||||
  "pages.PluginPage.table.icon.regenerate": "Regenerér {target}",
 | 
			
		||||
  "pages.PluginPage.table.icon.show": "Åben {target}",
 | 
			
		||||
  "pages.PluginPage.table.version": "Version",
 | 
			
		||||
  "pages.SettingsPage.Button.description": "Konfigurér dokumentations pluginnet",
 | 
			
		||||
  "pages.SettingsPage.header.description": "Konfigurér dokumentations pluginnet",
 | 
			
		||||
  "pages.SettingsPage.header.save": "Gem",
 | 
			
		||||
  "pages.SettingsPage.toggle.hint": "Gør dokumentationens endpoint privat",
 | 
			
		||||
  "pages.SettingsPage.toggle.label": "Begrænset adgang",
 | 
			
		||||
 | 
			
		||||
@ -29,7 +29,7 @@
 | 
			
		||||
  "pages.PluginPage.table.icon.regenerate": "Regenerate {target}",
 | 
			
		||||
  "pages.PluginPage.table.icon.show": "Open {target}",
 | 
			
		||||
  "pages.PluginPage.table.version": "Version",
 | 
			
		||||
  "pages.SettingsPage.Button.description": "Configure the documentation plugin",
 | 
			
		||||
  "pages.SettingsPage.header.description": "Configure the documentation plugin",
 | 
			
		||||
  "pages.SettingsPage.header.save": "Save",
 | 
			
		||||
  "pages.SettingsPage.toggle.hint": "Make the documentation endpoint private",
 | 
			
		||||
  "pages.SettingsPage.toggle.label": "Restricted Access",
 | 
			
		||||
 | 
			
		||||
@ -29,7 +29,7 @@
 | 
			
		||||
  "pages.PluginPage.table.icon.regenerate": "Regenerar {target}",
 | 
			
		||||
  "pages.PluginPage.table.icon.show": "Abrir {target}",
 | 
			
		||||
  "pages.PluginPage.table.version": "Versión",
 | 
			
		||||
  "pages.SettingsPage.Button.description": "Configura el plugin de documentación",
 | 
			
		||||
  "pages.SettingsPage.header.description": "Configura el plugin de documentación",
 | 
			
		||||
  "pages.SettingsPage.header.save": "Guardar",
 | 
			
		||||
  "pages.SettingsPage.toggle.hint": "Hacer que la documentación sea privada",
 | 
			
		||||
  "pages.SettingsPage.toggle.label": "Acceso restringido",
 | 
			
		||||
 | 
			
		||||
@ -29,7 +29,7 @@
 | 
			
		||||
  "pages.PluginPage.table.icon.regenerate": "{target} 재생성",
 | 
			
		||||
  "pages.PluginPage.table.icon.show": "{target} 열기",
 | 
			
		||||
  "pages.PluginPage.table.version": "버전",
 | 
			
		||||
  "pages.SettingsPage.Button.description": "도큐멘테이션 플러그인 설정",
 | 
			
		||||
  "pages.SettingsPage.header.description": "도큐멘테이션 플러그인 설정",
 | 
			
		||||
  "pages.SettingsPage.header.save": "저장",
 | 
			
		||||
  "pages.SettingsPage.toggle.hint": "도큐멘테이션 엔드포인트를 비공개로 설정합니다.",
 | 
			
		||||
  "pages.SettingsPage.toggle.label": "액세스 제한",
 | 
			
		||||
 | 
			
		||||
@ -29,7 +29,7 @@
 | 
			
		||||
  "pages.PluginPage.table.icon.regenerate": "Wygeneruj ponownie {target}",
 | 
			
		||||
  "pages.PluginPage.table.icon.show": "Otwórz {target}",
 | 
			
		||||
  "pages.PluginPage.table.version": "Wersja",
 | 
			
		||||
  "pages.SettingsPage.Button.description": "Skonfiguruj plugin dokumentacji",
 | 
			
		||||
  "pages.SettingsPage.header.description": "Skonfiguruj plugin dokumentacji",
 | 
			
		||||
  "pages.SettingsPage.header.save": "Zapisz",
 | 
			
		||||
  "pages.SettingsPage.toggle.hint": "Ustaw endpoint dokumentacji na prywatny",
 | 
			
		||||
  "pages.SettingsPage.toggle.label": "Dostęp ograniczony",
 | 
			
		||||
 | 
			
		||||
@ -29,7 +29,7 @@
 | 
			
		||||
  "pages.PluginPage.table.icon.regenerate": "Återskapa {target}",
 | 
			
		||||
  "pages.PluginPage.table.icon.show": "Öppna {target}",
 | 
			
		||||
  "pages.PluginPage.table.version": "Version",
 | 
			
		||||
  "pages.SettingsPage.Button.description": "Konfigurera dokumentationspluginet",
 | 
			
		||||
  "pages.SettingsPage.header.description": "Konfigurera dokumentationspluginet",
 | 
			
		||||
  "pages.SettingsPage.header.save": "Spara",
 | 
			
		||||
  "pages.SettingsPage.toggle.hint": "Gör dokumentationensrutten privat",
 | 
			
		||||
  "pages.SettingsPage.toggle.label": "Begränsad åtkomst",
 | 
			
		||||
 | 
			
		||||
@ -29,7 +29,7 @@
 | 
			
		||||
  "pages.PluginPage.table.icon.regenerate": "Yeniden üret: {target}",
 | 
			
		||||
  "pages.PluginPage.table.icon.show": "Aç: {target}",
 | 
			
		||||
  "pages.PluginPage.table.version": "Versiyon",
 | 
			
		||||
  "pages.SettingsPage.Button.description": "Dokümantasyon eklentisini ayarla",
 | 
			
		||||
  "pages.SettingsPage.header.description": "Dokümantasyon eklentisini ayarla",
 | 
			
		||||
  "pages.SettingsPage.header.save": "Kaydet",
 | 
			
		||||
  "pages.SettingsPage.toggle.hint": "Dokümantasyon uç noktasını gizli yap",
 | 
			
		||||
  "pages.SettingsPage.toggle.label": "Kısıtlı Erişim",
 | 
			
		||||
 | 
			
		||||
@ -29,7 +29,7 @@
 | 
			
		||||
  "pages.PluginPage.table.icon.regenerate": "重新產生 {target}",
 | 
			
		||||
  "pages.PluginPage.table.icon.show": "開啟 {target}",
 | 
			
		||||
  "pages.PluginPage.table.version": "版本",
 | 
			
		||||
  "pages.SettingsPage.Button.description": "設定說明文件外掛程式",
 | 
			
		||||
  "pages.SettingsPage.header.description": "設定說明文件外掛程式",
 | 
			
		||||
  "pages.SettingsPage.header.save": "儲存",
 | 
			
		||||
  "pages.SettingsPage.toggle.hint": "將說明文件端點設為私人",
 | 
			
		||||
  "pages.SettingsPage.toggle.label": "受限存取",
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user