[READ-ONLY] a fast, modern browser for the npm registry
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

feat: move i18n configuration (#263)

authored by

Joaquín Sánchez and committed by
GitHub
484a8881 acfa1459

+4967 -30
+361
config/i18n.ts
··· 1 + import type { 2 + DateTimeFormats, 3 + NumberFormats, 4 + PluralizationRule, 5 + PluralizationRules, 6 + } from '@intlify/core-base' 7 + import type { LocaleObject } from '@nuxtjs/i18n' 8 + 9 + interface LocaleObjectData extends LocaleObject { 10 + numberFormats?: NumberFormats 11 + dateTimeFormats?: DateTimeFormats 12 + pluralRule?: PluralizationRule 13 + } 14 + 15 + export const countryLocaleVariants: Record<string, (LocaleObjectData & { country?: boolean })[]> = { 16 + /*ar: [ 17 + // ar.json contains ar-EG translations 18 + // { code: 'ar-DZ', name: 'Arabic (Algeria)' }, 19 + // { code: 'ar-BH', name: 'Arabic (Bahrain)' }, 20 + { country: true, code: 'ar-EG', name: 'العربية' }, 21 + // { code: 'ar-EG', name: 'Arabic (Egypt)' }, 22 + // { code: 'ar-IQ', name: 'Arabic (Iraq)' }, 23 + // { code: 'ar-JO', name: 'Arabic (Jordan)' }, 24 + // { code: 'ar-KW', name: 'Arabic (Kuwait)' }, 25 + // { code: 'ar-LB', name: 'Arabic (Lebanon)' }, 26 + // { code: 'ar-LY', name: 'Arabic (Libya)' }, 27 + // { code: 'ar-MA', name: 'Arabic (Morocco)' }, 28 + // { code: 'ar-OM', name: 'Arabic (Oman)' }, 29 + // { code: 'ar-QA', name: 'Arabic (Qatar)' }, 30 + // { code: 'ar-SA', name: 'Arabic (Saudi Arabia)' }, 31 + // { code: 'ar-SY', name: 'Arabic (Syria)' }, 32 + // { code: 'ar-TN', name: 'Arabic (Tunisia)' }, 33 + // { code: 'ar-AE', name: 'Arabic (U.A.E.)' }, 34 + // { code: 'ar-YE', name: 'Arabic (Yemen)' }, 35 + ],*/ 36 + en: [ 37 + // en.json contains en-US translations 38 + { country: true, code: 'en-US', name: 'English (US)' }, 39 + // { code: 'en-CA', name: 'English (Canada)' }, 40 + // { code: 'en-GB', name: 'English (UK)' }, 41 + ], 42 + /*ca: [ 43 + // ca.json contains ca-ES translations 44 + // { code: 'ca-AD', name: 'Català (Andorra)' }, 45 + { country: true, code: 'ca-ES', name: 'Català (Espanya)' }, 46 + { code: 'ca-valencia', name: 'Català (valencià)' }, 47 + // { code: 'ca-FR', name: 'Català (França)' }, 48 + // { code: 'ca-IT', name: 'Català (Itàlia)' }, 49 + ],*/ 50 + es: [ 51 + // es.json contains es-ES translations 52 + // { code: 'es-AR', name: 'Español (Argentina)' }, 53 + // { code: 'es-BO', name: 'Español (Bolivia)' }, 54 + // { code: 'es-CL', name: 'Español (Chile)' }, 55 + // { code: 'es-CO', name: 'Español (Colombia)' }, 56 + // { code: 'es-CR', name: 'Español (Costa Rica)' }, 57 + // { code: 'es-DO', name: 'Español (República Dominicana)' }, 58 + // { code: 'es-EC', name: 'Español (Ecuador)' }, 59 + { country: true, code: 'es-ES', name: 'Español (España)' }, 60 + // TODO: Support es-419, if we include spanish country variants remove also fix on utils/language.ts module 61 + { code: 'es-419', name: 'Español (Latinoamérica)' }, 62 + // { code: 'es-GT', name: 'Español (Guatemala)' }, 63 + // { code: 'es-HN', name: 'Español (Honduras)' }, 64 + // { code: 'es-MX', name: 'Español (México)' }, 65 + // { code: 'es-NI', name: 'Español (Nicaragua)' }, 66 + // { code: 'es-PA', name: 'Español (Panamá)' }, 67 + // { code: 'es-PE', name: 'Español (Perú)' }, 68 + // { code: 'es-PR', name: 'Español (Puerto Rico)' }, 69 + // { code: 'es-SV', name: 'Español (El Salvador)' }, 70 + // { code: 'es-US', name: 'Español (Estados Unidos)' }, 71 + // { code: 'es-UY', name: 'Español (Uruguay)' }, 72 + // { code: 'es-VE', name: 'Español (Venezuela)' }, 73 + ], 74 + /*pt: [ 75 + // pt.json contains pt-PT translations 76 + { country: true, code: 'pt-PT', name: 'Português (Portugal)' }, 77 + { code: 'pt-BR', name: 'Português (Brasil)' }, 78 + ],*/ 79 + } 80 + 81 + const locales: (Omit<LocaleObjectData, 'code'> & { code: string })[] = [ 82 + { 83 + code: 'en', 84 + file: 'en.json', 85 + name: 'English', 86 + }, 87 + /*{ 88 + code: 'ar', 89 + file: 'ar.json', 90 + name: 'العربية', 91 + dir: 'rtl', 92 + pluralRule: (choice: number) => { 93 + const name = new Intl.PluralRules('ar-EG').select(choice) 94 + return { zero: 0, one: 1, two: 2, few: 3, many: 4, other: 5 }[name] 95 + }, 96 + } satisfies LocaleObjectData, 97 + { 98 + code: 'ckb', 99 + file: 'ckb.json', 100 + name: 'کوردیی ناوەندی', 101 + dir: 'rtl', 102 + pluralRule: (choice: number) => { 103 + const name = new Intl.PluralRules('ckb').select(choice) 104 + return { zero: 0, one: 1, two: 2, few: 3, many: 4, other: 5 }[name] 105 + }, 106 + } satisfies LocaleObjectData, 107 + { 108 + code: 'fa-IR', 109 + file: 'fa-IR.json', 110 + name: 'فارسی', 111 + dir: 'rtl', 112 + pluralRule: (choice: number) => { 113 + const name = new Intl.PluralRules('fa-IR').select(choice) 114 + return { zero: 0, one: 1, two: 2, few: 3, many: 4, other: 5 }[name] 115 + }, 116 + } satisfies LocaleObjectData, 117 + { 118 + code: 'ca', 119 + file: 'ca.json', 120 + name: 'Català', 121 + }, 122 + { 123 + code: 'el-GR', 124 + file: 'el-GR.json', 125 + name: 'Ελληνικά', 126 + }, 127 + */ 128 + { 129 + code: 'de-DE', 130 + file: 'de-DE.json', 131 + name: 'Deutsch', 132 + }, 133 + /*{ 134 + code: 'hu-HU', 135 + file: 'hu-HU.json', 136 + name: 'Magyar', 137 + },*/ 138 + { 139 + code: 'zh-CN', 140 + file: 'zh-CN.json', 141 + name: '简体中文', 142 + }, 143 + /*{ 144 + code: 'zh-TW', 145 + file: 'zh-TW.json', 146 + name: '繁體中文', 147 + }, 148 + { 149 + code: 'ja-JP', 150 + file: 'ja-JP.json', 151 + name: '日本語', 152 + }, 153 + { 154 + code: 'nl-NL', 155 + file: 'nl-NL.json', 156 + name: 'Nederlands', 157 + },*/ 158 + { 159 + code: 'es', 160 + file: 'es.json', 161 + name: 'Español', 162 + }, 163 + /*{ 164 + code: 'eu-ES', 165 + file: 'eu-ES.json', 166 + name: 'Euskara', 167 + },*/ 168 + { 169 + code: 'fr-FR', 170 + file: 'fr-FR.json', 171 + name: 'Français', 172 + }, 173 + /*{ 174 + code: 'ru-RU', 175 + file: 'ru-RU.json', 176 + name: 'Русский', 177 + pluralRule: (choice: number) => { 178 + const name = new Intl.PluralRules('ru-RU').select(choice) 179 + return { zero: 2 /!* not used *!/, one: 0, two: 1 /!* not used *!/, few: 1, many: 2, other: 3 }[name] 180 + }, 181 + }, 182 + { 183 + code: 'uk-UA', 184 + file: 'uk-UA.json', 185 + name: 'Українська', 186 + pluralRule: (choice: number) => { 187 + if (choice === 0) 188 + return 0 189 + 190 + const name = new Intl.PluralRules('uk-UA').select(choice) 191 + return { zero: 0, one: 1, two: 0 /!* not used *!/, few: 2, many: 3, other: 4 }[name] 192 + }, 193 + }, 194 + { 195 + code: 'cs-CZ', 196 + file: 'cs-CZ.json', 197 + name: 'Česky', 198 + }, 199 + { 200 + code: 'pl-PL', 201 + file: 'pl-PL.json', 202 + name: 'Polski', 203 + pluralRule: (choice: number) => { 204 + if (choice === 0) 205 + return 0 206 + 207 + const name = new Intl.PluralRules('pl-PL').select(choice) 208 + return { zero: 0, one: 1, two: 0 /!* not used *!/, few: 2, many: 3, other: 4 }[name] 209 + }, 210 + }, 211 + { 212 + code: 'pt', 213 + file: 'pt.json', 214 + name: 'Português', 215 + }, 216 + { 217 + code: 'tr-TR', 218 + file: 'tr-TR.json', 219 + name: 'Türkçe', 220 + }, 221 + { 222 + code: 'id-ID', 223 + file: 'id-ID.json', 224 + name: 'Indonesia', 225 + }, 226 + { 227 + code: 'fi', 228 + file: 'fi.json', 229 + name: 'Suomi', 230 + }, 231 + { 232 + code: 'gl-ES', 233 + file: 'gl-ES.json', 234 + name: 'Galego', 235 + }, 236 + { 237 + code: 'ko-KR', 238 + file: 'ko-KR.json', 239 + name: '한국어', 240 + },*/ 241 + { 242 + code: 'it-IT', 243 + file: 'it-IT.json', 244 + name: 'Italiano', 245 + }, 246 + /*{ 247 + code: 'sv', 248 + file: 'sv.json', 249 + name: 'Svenska', 250 + }, 251 + { 252 + code: 'th-TH', 253 + file: 'th-TH.json', 254 + name: 'ไทย', 255 + }, 256 + { 257 + code: 'tl-PH', 258 + file: 'tl-PH.json', 259 + name: 'Tagalog', 260 + }, 261 + { 262 + code: 'vi-VN', 263 + file: 'vi-VN.json', 264 + name: 'Tiếng Việt', 265 + }, 266 + { 267 + code: 'cy', 268 + file: 'cy.json', 269 + name: 'Cymraeg', 270 + },*/ 271 + ] 272 + 273 + function buildLocales() { 274 + const useLocales = Object.values(locales).reduce((acc, data) => { 275 + const locales = countryLocaleVariants[data.code] 276 + if (locales) { 277 + locales.forEach(l => { 278 + const entry: LocaleObjectData = { 279 + ...data, 280 + code: l.code, 281 + name: l.name, 282 + files: [data.file as string, `${l.code}.json`], 283 + } 284 + delete entry.file 285 + acc.push(entry) 286 + }) 287 + } else { 288 + acc.push(data as LocaleObjectData) 289 + } 290 + return acc 291 + }, [] as LocaleObjectData[]) 292 + 293 + return useLocales.sort((a, b) => a.code.localeCompare(b.code)) 294 + } 295 + 296 + export const currentLocales = buildLocales() 297 + 298 + export const datetimeFormats = Object.values(currentLocales).reduce((acc, data) => { 299 + const dateTimeFormats = data.dateTimeFormats 300 + if (dateTimeFormats) { 301 + acc[data.code] = { ...dateTimeFormats } 302 + delete data.dateTimeFormats 303 + } else { 304 + acc[data.code] = { 305 + shortDate: { 306 + dateStyle: 'short', 307 + }, 308 + short: { 309 + dateStyle: 'short', 310 + timeStyle: 'short', 311 + }, 312 + long: { 313 + dateStyle: 'long', 314 + timeStyle: 'medium', 315 + }, 316 + } 317 + } 318 + 319 + return acc 320 + }, {} as DateTimeFormats) 321 + 322 + export const numberFormats = Object.values(currentLocales).reduce((acc, data) => { 323 + const numberFormats = data.numberFormats 324 + if (numberFormats) { 325 + acc[data.code] = { ...numberFormats } 326 + delete data.numberFormats 327 + } else { 328 + acc[data.code] = { 329 + percentage: { 330 + style: 'percent', 331 + maximumFractionDigits: 1, 332 + }, 333 + smallCounting: { 334 + style: 'decimal', 335 + maximumFractionDigits: 0, 336 + }, 337 + kiloCounting: { 338 + notation: 'compact', 339 + compactDisplay: 'short', 340 + maximumFractionDigits: 1, 341 + }, 342 + millionCounting: { 343 + notation: 'compact', 344 + compactDisplay: 'short', 345 + maximumFractionDigits: 2, 346 + }, 347 + } 348 + } 349 + 350 + return acc 351 + }, {} as NumberFormats) 352 + 353 + export const pluralRules = Object.values(currentLocales).reduce((acc, data) => { 354 + const pluralRule = data.pluralRule 355 + if (pluralRule) { 356 + acc[data.code] = pluralRule 357 + delete data.pluralRule 358 + } 359 + 360 + return acc 361 + }, {} as PluralizationRules)
+9 -1
i18n/i18n.config.ts
··· 1 + import { currentLocales, datetimeFormats, numberFormats, pluralRules } from '../config/i18n' 2 + 1 3 export default defineI18nConfig(() => { 2 4 return { 3 - fallbackLocale: 'en', 5 + availableLocales: currentLocales.map(l => l.code), 6 + fallbackLocale: 'en-US', 7 + fallbackWarn: true, 8 + missingWarn: true, 9 + datetimeFormats, 10 + numberFormats, 11 + pluralRules, 4 12 } 5 13 })
i18n/locales/de.json i18n/locales/de-DE.json
+1
i18n/locales/en-US.json
··· 1 + {}
+1
i18n/locales/es-419.json
··· 1 + {}
+1
i18n/locales/es-ES.json
··· 1 + {}
+580
i18n/locales/es.json
··· 1 + { 2 + "seo": { 3 + "home": { 4 + "title": "npmx - Navegador de Paquetes para el Registro de npm", 5 + "description": "Un mejor navegador para el registro de npm. Busca, navega y explora paquetes con una interfaz moderna." 6 + } 7 + }, 8 + "tagline": "un mejor navegador para el registro de npm", 9 + "non_affiliation_disclaimer": "no afiliado con npm, Inc.", 10 + "trademark_disclaimer": "npm es una marca registrada de npm, Inc. Este sitio no está afiliado con npm, Inc.", 11 + "footer": { 12 + "about": "acerca de", 13 + "docs": "documentación", 14 + "source": "código fuente", 15 + "social": "redes sociales", 16 + "chat": "chat" 17 + }, 18 + "search": { 19 + "label": "Buscar paquetes npm", 20 + "placeholder": "buscar paquetes...", 21 + "button": "buscar", 22 + "clear": "Limpiar búsqueda", 23 + "searching": "Buscando...", 24 + "found_packages": "{count} paquetes encontrados", 25 + "updating": "(actualizando...)", 26 + "no_results": "No se encontraron paquetes para \"{query}\"", 27 + "not_taken": "{name} está disponible", 28 + "claim_prompt": "Reclamar este nombre de paquete en npm", 29 + "claim_button": "Reclamar \"{name}\"", 30 + "want_to_claim": "¿Quieres reclamar este nombre de paquete?", 31 + "start_typing": "Comienza a escribir para buscar paquetes", 32 + "exact_match": "exacto", 33 + "suggestion": { 34 + "user": "usuario", 35 + "org": "organización", 36 + "view_user_packages": "Ver paquetes de este usuario", 37 + "view_org_packages": "Ver paquetes de esta organización" 38 + } 39 + }, 40 + "nav": { 41 + "popular_packages": "Paquetes populares", 42 + "search": "buscar", 43 + "settings": "configuración", 44 + "back": "Atrás" 45 + }, 46 + "settings": { 47 + "relative_dates": "Fechas relativas", 48 + "include_types": "Incluir {'@'}types en la instalación", 49 + "theme": "Tema", 50 + "theme_light": "Claro", 51 + "theme_dark": "Oscuro", 52 + "theme_system": "Sistema", 53 + "language": "Idioma", 54 + "help_translate": "Ayuda a traducir npmx", 55 + "accent_colors": "Colores de acento" 56 + }, 57 + "common": { 58 + "loading": "Cargando...", 59 + "loading_more": "Cargando más...", 60 + "loading_packages": "Cargando paquetes...", 61 + "end_of_results": "Fin de los resultados", 62 + "try_again": "Intentar de nuevo", 63 + "close": "Cerrar", 64 + "retry": "Reintentar", 65 + "copy": "copiar", 66 + "copied": "¡copiado!", 67 + "show_more": "mostrar más", 68 + "warnings": "Advertencias:", 69 + "go_back_home": "Volver al inicio", 70 + "view_on_npm": "ver en npm", 71 + "per_week": "/ semana", 72 + "sort": { 73 + "name": "nombre", 74 + "role": "rol", 75 + "members": "miembros" 76 + }, 77 + "scroll_to_top": "Volver arriba" 78 + }, 79 + "package": { 80 + "not_found": "Paquete No Encontrado", 81 + "not_found_message": "No se pudo encontrar el paquete.", 82 + "no_description": "Sin descripción disponible", 83 + "show_full_description": "Mostrar descripción completa", 84 + "not_latest": "(no es la última)", 85 + "verified_provenance": "Procedencia verificada", 86 + "view_permalink": "Ver enlace permanente de esta versión", 87 + "deprecation": { 88 + "package": "Este paquete ha sido descontinuado.", 89 + "version": "Esta versión ha sido descontinuada.", 90 + "no_reason": "No se proporcionó ninguna razón" 91 + }, 92 + "stats": { 93 + "license": "Licencia", 94 + "weekly": "Semanal", 95 + "deps": "Deps", 96 + "install_size": "Tamaño de Instalación", 97 + "updated": "Actualizado", 98 + "view_download_trends": "Ver tendencias de descarga", 99 + "view_dependency_graph": "Ver gráfico de dependencias", 100 + "inspect_dependency_tree": "Inspeccionar árbol de dependencias" 101 + }, 102 + "links": { 103 + "repo": "repositorio", 104 + "homepage": "página principal", 105 + "issues": "issues", 106 + "forks": "fork | forks", 107 + "jsr": "jsr", 108 + "code": "código", 109 + "docs": "documentación", 110 + "fund": "financiar" 111 + }, 112 + "get_started": { 113 + "title": "Comenzar", 114 + "pm_label": "Gestor de paquetes", 115 + "copy_command": "Copiar comando de instalación", 116 + "view_types": "Ver {package}" 117 + }, 118 + "create": { 119 + "title": "Crear nuevo proyecto", 120 + "copy_command": "Copiar comando de creación" 121 + }, 122 + "run": { 123 + "title": "Ejecutar", 124 + "locally": "Ejecutar localmente" 125 + }, 126 + "readme": { 127 + "title": "Léeme", 128 + "no_readme": "No hay README disponible.", 129 + "view_on_github": "Ver en GitHub" 130 + }, 131 + "keywords_title": "Palabras clave", 132 + "compatibility": "Compatibilidad", 133 + "card": { 134 + "publisher": "Publicador", 135 + "updated": "Actualizado", 136 + "weekly_downloads": "Descargas semanales", 137 + "keywords": "Palabras clave", 138 + "license": "Licencia" 139 + }, 140 + "versions": { 141 + "title": "Versiones", 142 + "collapse": "Contraer {tag}", 143 + "expand": "Expandir {tag}", 144 + "collapse_other": "Contraer otras versiones", 145 + "expand_other": "Expandir otras versiones", 146 + "collapse_major": "Contraer mayor {major}", 147 + "expand_major": "Expandir mayor {major}", 148 + "other_versions": "Otras versiones", 149 + "more_tagged": "{count} más etiquetadas", 150 + "all_covered": "Todas las versiones están cubiertas por las etiquetas anteriores", 151 + "deprecated_title": "{version} (descontinuada)" 152 + }, 153 + "dependencies": { 154 + "title": "Dependencias ({count})", 155 + "list_label": "Dependencias del paquete", 156 + "show_all": "mostrar todas las {count} deps", 157 + "optional": "opcional" 158 + }, 159 + "peer_dependencies": { 160 + "title": "Dependencias Peer ({count})", 161 + "list_label": "Dependencias peer del paquete", 162 + "show_all": "mostrar todas las {count} deps peer" 163 + }, 164 + "optional_dependencies": { 165 + "title": "Dependencias Opcionales ({count})", 166 + "list_label": "Dependencias opcionales del paquete", 167 + "show_all": "mostrar todas las {count} deps opcionales" 168 + }, 169 + "maintainers": { 170 + "title": "Mantenedores", 171 + "list_label": "Mantenedores del paquete", 172 + "you": "(tú)", 173 + "via": "vía {teams}", 174 + "remove_owner": "Remover a {name} como propietario", 175 + "username_to_add": "Nombre de usuario a agregar como propietario", 176 + "username_placeholder": "nombre de usuario...", 177 + "add_button": "agregar", 178 + "cancel_add": "Cancelar agregar propietario", 179 + "add_owner": "+ Agregar propietario" 180 + }, 181 + "downloads": { 182 + "title": "Descargas Semanales", 183 + "date_range": "{start} a {end}", 184 + "analyze": "Analizar descargas", 185 + "modal_title": "Descargas", 186 + "granularity": "Granularidad", 187 + "granularity_daily": "Diaria", 188 + "granularity_weekly": "Semanal", 189 + "granularity_monthly": "Mensual", 190 + "granularity_yearly": "Anual", 191 + "start_date": "Inicio", 192 + "end_date": "Fin", 193 + "no_data": "No hay datos de descarga disponibles", 194 + "loading": "Cargando...", 195 + "y_axis_label": "Descargas {granularity}" 196 + }, 197 + "install_scripts": { 198 + "title": "Scripts de Instalación", 199 + "script_label": "(script)", 200 + "npx_packages": "{count} paquete npx | {count} paquetes npx", 201 + "currently": "actualmente {version}" 202 + }, 203 + "playgrounds": { 204 + "title": "Pruébalo", 205 + "choose": "elegir playground" 206 + }, 207 + "license": { 208 + "view_spdx": "Ver texto de licencia en SPDX" 209 + }, 210 + "vulnerabilities": { 211 + "no_description": "Sin descripción disponible", 212 + "found": "{count} vulnerabilidad encontrada | {count} vulnerabilidades encontradas", 213 + "deps_found": "{count} vulnerabilidad encontrada | {count} vulnerabilidades encontradas", 214 + "deps_affected": "{count} dependencia afectada | {count} dependencias afectadas", 215 + "tree_found": "{vulns} vulnerabilidad en {packages}/{total} paquetes | {vulns} vulnerabilidades en {packages}/{total} paquetes", 216 + "scanning_tree": "Escaneando árbol de dependencias...", 217 + "show_all_packages": "mostrar todos los {count} paquetes afectados", 218 + "no_summary": "Sin resumen", 219 + "view_details": "Ver detalles de vulnerabilidad", 220 + "path": "ruta", 221 + "more": "+{count} más", 222 + "packages_failed": "{count} paquete no pudo ser verificado | {count} paquetes no pudieron ser verificados", 223 + "no_known": "Sin vulnerabilidades conocidas en {count} paquetes", 224 + "scan_failed": "No se pudo escanear en busca de vulnerabilidades", 225 + "depth": { 226 + "root": "Este paquete", 227 + "direct": "Dependencia directa", 228 + "transitive": "Dependencia transitiva (indirecta)" 229 + }, 230 + "severity": { 231 + "critical": "crítica", 232 + "high": "alta", 233 + "moderate": "moderada", 234 + "low": "baja" 235 + } 236 + }, 237 + "access": { 238 + "title": "Acceso de Equipos", 239 + "refresh": "Actualizar acceso de equipos", 240 + "list_label": "Lista de acceso de equipos", 241 + "owner": "propietario", 242 + "rw": "lec/esc", 243 + "ro": "solo lec", 244 + "revoke_access": "Revocar acceso de {name}", 245 + "no_access": "Sin acceso de equipos configurado", 246 + "select_team_label": "Seleccionar equipo", 247 + "loading_teams": "Cargando equipos...", 248 + "select_team": "Seleccionar equipo", 249 + "permission_label": "Nivel de permiso", 250 + "permission": { 251 + "read_only": "solo lectura", 252 + "read_write": "lectura-escritura" 253 + }, 254 + "grant_button": "otorgar", 255 + "cancel_grant": "Cancelar otorgar acceso", 256 + "grant_access": "+ Otorgar acceso de equipo" 257 + }, 258 + "list": { 259 + "filter_label": "Filtrar paquetes", 260 + "filter_placeholder": "Filtrar paquetes...", 261 + "sort_label": "Ordenar paquetes", 262 + "showing_count": "Mostrando {filtered} de {total} paquetes" 263 + }, 264 + "skeleton": { 265 + "loading": "Cargando detalles del paquete", 266 + "license": "Licencia", 267 + "weekly": "Semanal", 268 + "size": "Tamaño", 269 + "deps": "Deps", 270 + "updated": "Actualizado", 271 + "install": "Instalar", 272 + "readme": "Léeme", 273 + "maintainers": "Mantenedores", 274 + "keywords": "Palabras clave", 275 + "versions": "Versiones", 276 + "dependencies": "Dependencias" 277 + }, 278 + "sort": { 279 + "downloads": "Más descargados", 280 + "updated": "Recientemente actualizado", 281 + "name_asc": "Nombre (A-Z)", 282 + "name_desc": "Nombre (Z-A)" 283 + } 284 + }, 285 + "connector": { 286 + "status": { 287 + "connecting": "conectando...", 288 + "connected_as": "conectado como {'@'}{user}", 289 + "connected": "conectado", 290 + "connect_cli": "conectar CLI local", 291 + "aria_connecting": "Conectando al conector local", 292 + "aria_connected": "Conectado al conector local", 293 + "aria_click_to_connect": "Clic para conectar al conector local", 294 + "avatar_alt": "Avatar de {user}" 295 + }, 296 + "modal": { 297 + "title": "Conector Local", 298 + "close_modal": "Cerrar modal", 299 + "connected": "Conectado", 300 + "logged_in_as": "Conectado como {'@'}{user}", 301 + "connected_hint": "Ahora puedes gestionar paquetes y organizaciones desde la interfaz web.", 302 + "disconnect": "Desconectar", 303 + "run_hint": "Ejecuta el conector en tu máquina para habilitar funciones de administración.", 304 + "copy_command": "Copiar comando", 305 + "copied": "Copiado", 306 + "paste_token": "Luego pega el token a continuación para conectar:", 307 + "token_label": "Token", 308 + "token_placeholder": "pegar token aquí...", 309 + "advanced": "Opciones avanzadas", 310 + "port_label": "Puerto", 311 + "warning": "ADVERTENCIA", 312 + "warning_text": "Esto permite a npmx acceder a tu CLI de npm. Solo conéctate a sitios de confianza.", 313 + "connect": "Conectar", 314 + "connecting": "Conectando..." 315 + } 316 + }, 317 + "operations": { 318 + "queue": { 319 + "title": "Cola de Operaciones", 320 + "clear_all": "limpiar todo", 321 + "refresh": "Actualizar operaciones", 322 + "empty": "No hay operaciones en cola", 323 + "empty_hint": "Agrega operaciones desde las páginas de paquetes u organizaciones", 324 + "active_label": "Operaciones activas", 325 + "otp_required": "OTP requerido", 326 + "otp_prompt": "Ingresa OTP para continuar", 327 + "otp_placeholder": "Ingresa código OTP...", 328 + "otp_label": "Contraseña de un solo uso", 329 + "retry_otp": "Reintentar con OTP", 330 + "retrying": "Reintentando...", 331 + "approve_operation": "Aprobar operación", 332 + "remove_operation": "Remover operación", 333 + "approve_all": "Aprobar Todas", 334 + "execute": "Ejecutar", 335 + "executing": "Ejecutando...", 336 + "log": "Registro", 337 + "log_label": "Registro de operaciones completadas", 338 + "remove_from_log": "Remover del registro" 339 + } 340 + }, 341 + "org": { 342 + "teams": { 343 + "title": "Equipos", 344 + "refresh": "Actualizar equipos", 345 + "filter_label": "Filtrar equipos", 346 + "filter_placeholder": "Filtrar equipos...", 347 + "sort_by": "Ordenar por", 348 + "loading": "Cargando equipos...", 349 + "no_teams": "No se encontraron equipos", 350 + "list_label": "Equipos de la organización", 351 + "delete_team": "Eliminar equipo {name}", 352 + "member_count": "{count} miembro | {count} miembros", 353 + "members_of": "Miembros de {team}", 354 + "no_members": "Sin miembros", 355 + "remove_user": "Remover a {user} del equipo", 356 + "username_to_add": "Nombre de usuario a agregar a {team}", 357 + "username_placeholder": "nombre de usuario...", 358 + "add_button": "agregar", 359 + "cancel_add_user": "Cancelar agregar usuario", 360 + "add_member": "+ Agregar miembro", 361 + "team_name_label": "Nombre del equipo", 362 + "team_name_placeholder": "nombre-del-equipo...", 363 + "create_button": "crear", 364 + "no_match": "Ningún equipo coincide con \"{query}\"", 365 + "cancel_create": "Cancelar crear equipo", 366 + "create_team": "+ Crear equipo" 367 + }, 368 + "members": { 369 + "title": "Miembros", 370 + "refresh": "Actualizar miembros", 371 + "filter_label": "Filtrar miembros", 372 + "filter_placeholder": "Filtrar miembros...", 373 + "filter_by_role": "Filtrar por rol", 374 + "filter_by_team": "Filtrar por equipo", 375 + "all_teams": "todos los equipos", 376 + "sort_by": "Ordenar por", 377 + "loading": "Cargando miembros...", 378 + "no_members": "No se encontraron miembros", 379 + "list_label": "Miembros de la organización", 380 + "change_role_for": "Cambiar rol de {name}", 381 + "remove_from_org": "Remover a {name} de la org", 382 + "view_team": "Ver equipo {team}", 383 + "no_match": "Ningún miembro coincide con tus filtros", 384 + "username_label": "Nombre de usuario", 385 + "username_placeholder": "nombre de usuario...", 386 + "role_label": "Rol", 387 + "role": { 388 + "all": "todos", 389 + "developer": "desarrollador", 390 + "admin": "administrador", 391 + "owner": "propietario" 392 + }, 393 + "team_label": "Equipo", 394 + "no_team": "sin equipo", 395 + "add_button": "agregar", 396 + "cancel_add": "Cancelar agregar miembro", 397 + "add_member": "+ Agregar miembro" 398 + }, 399 + "public_packages": "{count} paquete público | {count} paquetes públicos", 400 + "page": { 401 + "packages_title": "Paquetes", 402 + "members_tab": "Miembros", 403 + "teams_tab": "Equipos", 404 + "no_packages": "No se encontraron paquetes públicos para", 405 + "no_packages_hint": "Esta organización puede no existir o no tiene paquetes públicos.", 406 + "failed_to_load": "Error al cargar paquetes de la organización", 407 + "no_match": "Ningún paquete coincide con \"{query}\"", 408 + "not_found": "Organización no encontrada", 409 + "not_found_message": "La organización \"{'@'}{name}\" no existe en npm", 410 + "filter_placeholder": "Filtrar {count} paquetes..." 411 + } 412 + }, 413 + "user": { 414 + "combobox": { 415 + "add_to_org_hint": "(también agregará a la org)", 416 + "press_enter_to_add": "Presiona Enter para agregar {'@'}{username}", 417 + "default_placeholder": "nombre de usuario...", 418 + "suggestions_label": "Sugerencias de usuarios" 419 + }, 420 + "page": { 421 + "packages_title": "Paquetes", 422 + "no_packages": "No se encontraron paquetes públicos para", 423 + "no_packages_hint": "Este usuario puede no existir o no tiene paquetes públicos.", 424 + "failed_to_load": "Error al cargar paquetes del usuario", 425 + "no_match": "Ningún paquete coincide con \"{query}\"", 426 + "filter_placeholder": "Filtrar {count} paquetes..." 427 + }, 428 + "orgs_page": { 429 + "title": "Organizaciones", 430 + "back_to_profile": "Volver al perfil", 431 + "connect_required": "Conecta el CLI local para ver tus organizaciones.", 432 + "connect_hint_prefix": "Ejecuta", 433 + "connect_hint_suffix": "para comenzar.", 434 + "own_orgs_only": "Solo puedes ver tus propias organizaciones.", 435 + "view_your_orgs": "Ver tus organizaciones", 436 + "loading": "Cargando organizaciones...", 437 + "empty": "No se encontraron organizaciones.", 438 + "empty_hint": "Las organizaciones se detectan desde tus paquetes con alcance.", 439 + "count": "{count} Organización | {count} Organizaciones", 440 + "packages_count": "{count} paquete | {count} paquetes" 441 + } 442 + }, 443 + "claim": { 444 + "modal": { 445 + "title": "Reclamar Nombre de Paquete", 446 + "close_modal": "Cerrar modal", 447 + "success": "¡Paquete reclamado!", 448 + "success_detail": "{name}{'@'}0.0.0 ha sido publicado en npm.", 449 + "success_hint": "Ahora puedes publicar nuevas versiones de este paquete usando npm publish.", 450 + "view_package": "Ver Paquete", 451 + "invalid_name": "Nombre de paquete inválido:", 452 + "available": "¡Este nombre está disponible!", 453 + "taken": "Este nombre ya está tomado.", 454 + "similar_warning": "Existen paquetes similares - npm puede rechazar este nombre:", 455 + "related": "Paquetes relacionados:", 456 + "scope_warning_title": "Considera usar un paquete con alcance en su lugar", 457 + "scope_warning_text": "Los nombres de paquetes sin alcance son un recurso compartido. Solo reclama un nombre si tienes la intención de publicar y mantener un paquete. Para proyectos personales u organizacionales, usa un nombre con alcance como {'@'}{username}/{name}.", 458 + "connect_required": "Conéctate al conector local para reclamar este nombre de paquete.", 459 + "connect_button": "Conectar al Conector", 460 + "publish_hint": "Esto publicará un paquete de marcador de posición mínimo.", 461 + "preview_json": "Vista previa package.json", 462 + "claim_button": "Reclamar Nombre de Paquete", 463 + "publishing": "Publicando...", 464 + "checking": "Verificando disponibilidad...", 465 + "failed_to_check": "Error al verificar disponibilidad del nombre", 466 + "failed_to_claim": "Error al reclamar paquete" 467 + } 468 + }, 469 + "code": { 470 + "files_label": "Archivos", 471 + "no_files": "No hay archivos en este directorio", 472 + "select_version": "Seleccionar versión", 473 + "root": "raíz", 474 + "lines": "{count} líneas", 475 + "toggle_tree": "Alternar árbol de archivos", 476 + "close_tree": "Cerrar árbol de archivos", 477 + "copy_link": "Copiar enlace", 478 + "raw": "Sin procesar", 479 + "view_raw": "Ver archivo sin procesar", 480 + "file_too_large": "Archivo demasiado grande para vista previa", 481 + "file_size_warning": "{size} excede el límite de 500KB para resaltado de sintaxis", 482 + "load_anyway": "Cargar de todas formas", 483 + "failed_to_load": "Error al cargar archivo", 484 + "unavailable_hint": "El archivo puede ser demasiado grande o no estar disponible", 485 + "version_required": "Se requiere la versión para navegar el código", 486 + "go_to_package": "Ir al paquete", 487 + "loading_tree": "Cargando árbol de archivos...", 488 + "failed_to_load_tree": "Error al cargar archivos de esta versión del paquete", 489 + "back_to_package": "Volver al paquete", 490 + "table": { 491 + "name": "Nombre", 492 + "size": "Tamaño" 493 + } 494 + }, 495 + "badges": { 496 + "provenance": { 497 + "verified": "verificado", 498 + "verified_title": "Procedencia verificada", 499 + "verified_via": "Verificado: publicado vía {provider}" 500 + }, 501 + "jsr": { 502 + "title": "también disponible en JSR", 503 + "label": "jsr" 504 + } 505 + }, 506 + "about": { 507 + "title": "Acerca de", 508 + "heading": "acerca de", 509 + "meta_description": "npmx es un navegador rápido y moderno para el registro de npm. Una mejor UX/DX para explorar paquetes npm.", 510 + "back_home": "volver al inicio", 511 + "what_we_are": { 512 + "title": "Qué somos", 513 + "better_ux_dx": "mejor UX/DX", 514 + "admin_ui": "interfaz de administración", 515 + "description": "npmx es una {betterUxDx} para el registro de paquetes npm y herramientas. Proporcionamos una interfaz rápida y moderna para explorar paquetes, con características como modo oscuro, navegación por teclado, navegación de código y conexiones a registros alternativos como {jsr}.", 516 + "admin_description": "También aspiramos a proporcionar una mejor {adminUi} para gestionar tus paquetes, equipos y organizaciones — todo desde el navegador, impulsado por tu CLI de npm local." 517 + }, 518 + "what_we_are_not": { 519 + "title": "Qué no somos", 520 + "not_package_manager": "No somos un gestor de paquetes.", 521 + "not_registry": "No somos un registro.", 522 + "registry_description": "No alojamos paquetes. Solo somos una mejor forma de navegarlos.", 523 + "package_managers_exist": "{already} {people} {building} {really} {cool} {package} {managers}.", 524 + "words": { 525 + "already": "Ya hay", 526 + "people": "personas", 527 + "building": "construyendo", 528 + "really": "gestores de", 529 + "cool": "paquetes", 530 + "package": "realmente", 531 + "managers": "geniales" 532 + } 533 + }, 534 + "contributors": { 535 + "title": "Colaboradores", 536 + "description": "npmx es completamente de código abierto, construido por una increíble comunidad de colaboradores.", 537 + "loading": "Cargando colaboradores...", 538 + "error": "Error al cargar colaboradores", 539 + "view_profile": "Ver perfil de GitHub de {name}" 540 + }, 541 + "get_involved": { 542 + "title": "Involúcrate", 543 + "contribute": { 544 + "title": "Contribuir", 545 + "description": "Ayúdanos a construir una mejor experiencia npm.", 546 + "cta": "Ver en GitHub" 547 + }, 548 + "community": { 549 + "title": "Únete a la comunidad", 550 + "description": "Chatea, haz preguntas y comparte ideas.", 551 + "cta": "Únete a Discord" 552 + }, 553 + "follow": { 554 + "title": "Mantente actualizado", 555 + "description": "Descubre lo último sobre npmx.", 556 + "cta": "Seguir en Bluesky" 557 + } 558 + } 559 + }, 560 + "header": { 561 + "home": "inicio de npmx", 562 + "github": "GitHub", 563 + "packages": "paquetes", 564 + "packages_dropdown": { 565 + "title": "Tus Paquetes", 566 + "loading": "Cargando...", 567 + "error": "Error al cargar paquetes", 568 + "empty": "No se encontraron paquetes", 569 + "view_all": "Ver todos" 570 + }, 571 + "orgs": "organizaciones", 572 + "orgs_dropdown": { 573 + "title": "Tus Organizaciones", 574 + "loading": "Cargando...", 575 + "error": "Error al cargar organizaciones", 576 + "empty": "No se encontraron organizaciones", 577 + "view_all": "Ver todas" 578 + } 579 + } 580 + }
i18n/locales/fr.json i18n/locales/fr-FR.json
i18n/locales/it.json i18n/locales/it-IT.json
+5 -20
lunaria.config.ts
··· 1 1 import { defineConfig } from '@lunariajs/core/config' 2 + import { locales, sourceLocale } from './lunaria/prepare-json-files.ts' 2 3 3 4 export default defineConfig({ 4 5 repository: { 5 6 name: 'npmx-dev/npmx.dev', 6 7 }, 7 - sourceLocale: { 8 - label: 'English', 9 - lang: 'en', 10 - }, 11 - locales: [ 12 - { 13 - label: 'Français', 14 - lang: 'fr', 15 - }, 16 - { 17 - label: 'Italiano', 18 - lang: 'it', 19 - }, 20 - { 21 - label: '简体中文', 22 - lang: 'zh-CN', 23 - }, 24 - ], 8 + sourceLocale, 9 + locales, 25 10 files: [ 26 11 { 27 - include: ['i18n/locales/en.json'], 28 - pattern: 'i18n/locales/@lang.json', 12 + include: ['lunaria/files/en-US.json'], 13 + pattern: 'lunaria/files/@lang.json', 29 14 type: 'dictionary', 30 15 }, 31 16 ],
+539
lunaria/files/de-DE.json
··· 1 + { 2 + "seo": { 3 + "home": { 4 + "title": "npmx - Paket-Browser für die npm Registry", 5 + "description": "Ein besserer Browser für die npm Registry. Pakete suchen, durchstöbern und erkunden mit einer modernen Oberfläche." 6 + } 7 + }, 8 + "tagline": "ein besserer Browser für die npm Registry", 9 + "non_affiliation_disclaimer": "nicht verbunden mit npm, Inc.", 10 + "trademark_disclaimer": "npm ist eine eingetragene Marke von npm, Inc. Diese Seite ist nicht mit npm, Inc. verbunden.", 11 + "footer": { 12 + "about": "über uns", 13 + "docs": "Doku", 14 + "source": "Quellcode", 15 + "social": "Social", 16 + "chat": "Chat" 17 + }, 18 + "search": { 19 + "label": "npm-Pakete durchsuchen", 20 + "placeholder": "Pakete suchen...", 21 + "button": "Suchen", 22 + "clear": "Suche löschen", 23 + "searching": "Suche läuft...", 24 + "found_packages": "{count} Pakete gefunden", 25 + "updating": "(wird aktualisiert...)", 26 + "no_results": "Keine Pakete gefunden für \"{query}\"", 27 + "not_taken": "{name} ist noch frei", 28 + "claim_prompt": "Diesen Paketnamen auf npm beanspruchen", 29 + "claim_button": "\"{name}\" beanspruchen", 30 + "want_to_claim": "Möchtest du diesen Paketnamen beanspruchen?", 31 + "start_typing": "Tippe, um Pakete zu suchen", 32 + "exact_match": "exakt", 33 + "suggestion": { 34 + "user": "Benutzer", 35 + "org": "Org", 36 + "view_user_packages": "Pakete dieses Benutzers anzeigen", 37 + "view_org_packages": "Pakete dieser Organisation anzeigen" 38 + } 39 + }, 40 + "nav": { 41 + "popular_packages": "Beliebte Pakete", 42 + "search": "Suche", 43 + "settings": "Einstellungen" 44 + }, 45 + "settings": { 46 + "relative_dates": "Relative Datumsangaben", 47 + "include_types": "{'@'}types bei Installation einschließen", 48 + "theme": "Design", 49 + "theme_light": "Hell", 50 + "theme_dark": "Dunkel", 51 + "theme_system": "System", 52 + "language": "Sprache", 53 + "help_translate": "Hilf bei der Übersetzung von npmx", 54 + "accent_colors": "Akzentfarben" 55 + }, 56 + "common": { 57 + "loading": "Lädt...", 58 + "loading_more": "Lädt mehr...", 59 + "loading_packages": "Pakete werden geladen...", 60 + "end_of_results": "Keine weiteren Ergebnisse", 61 + "try_again": "Erneut versuchen", 62 + "close": "Schließen", 63 + "retry": "Wiederholen", 64 + "copy": "Kopieren", 65 + "copied": "Kopiert!", 66 + "show_more": "Mehr anzeigen", 67 + "warnings": "Warnungen:", 68 + "go_back_home": "Zur Startseite", 69 + "view_on_npm": "auf npm ansehen", 70 + "per_week": "/ Woche", 71 + "sort": { 72 + "name": "Name", 73 + "role": "Rolle", 74 + "members": "Mitglieder" 75 + }, 76 + "scroll_to_top": "Nach oben scrollen" 77 + }, 78 + "package": { 79 + "not_found": "Paket nicht gefunden", 80 + "not_found_message": "Das Paket konnte nicht gefunden werden.", 81 + "no_description": "Keine Beschreibung vorhanden", 82 + "show_full_description": "Vollständige Beschreibung anzeigen", 83 + "not_latest": "(nicht aktuell)", 84 + "verified_provenance": "Verifizierte Herkunft", 85 + "view_permalink": "Permalink für diese Version anzeigen", 86 + "deprecation": { 87 + "package": "Dieses Paket ist veraltet.", 88 + "version": "Diese Version ist veraltet.", 89 + "no_reason": "Kein Grund angegeben" 90 + }, 91 + "stats": { 92 + "license": "Lizenz", 93 + "weekly": "Wöchentlich", 94 + "deps": "Deps", 95 + "install_size": "Installationsgröße", 96 + "updated": "Aktualisiert", 97 + "view_download_trends": "Download-Trends anzeigen", 98 + "view_dependency_graph": "Abhängigkeitsgraph anzeigen", 99 + "inspect_dependency_tree": "Abhängigkeitsbaum untersuchen" 100 + }, 101 + "links": { 102 + "repo": "Repo", 103 + "homepage": "Homepage", 104 + "issues": "Issues", 105 + "forks": "Fork | Forks", 106 + "jsr": "JSR", 107 + "code": "Code", 108 + "docs": "Doku", 109 + "fund": "Spenden" 110 + }, 111 + "install": { 112 + "title": "Installieren", 113 + "pm_label": "Paketmanager", 114 + "copy_command": "Installationsbefehl kopieren", 115 + "view_types": "{package} anzeigen" 116 + }, 117 + "create": { 118 + "title": "Neues Projekt erstellen", 119 + "copy_command": "Erstellungsbefehl kopieren" 120 + }, 121 + "run": { 122 + "title": "Ausführen", 123 + "locally": "Lokal ausführen" 124 + }, 125 + "readme": { 126 + "title": "Readme", 127 + "no_readme": "Kein README vorhanden.", 128 + "view_on_github": "Auf GitHub ansehen" 129 + }, 130 + "keywords_title": "Schlüsselwörter", 131 + "compatibility": "Kompatibilität", 132 + "card": { 133 + "publisher": "Herausgeber", 134 + "updated": "Aktualisiert", 135 + "weekly_downloads": "Wöchentliche Downloads", 136 + "keywords": "Schlüsselwörter", 137 + "license": "Lizenz" 138 + }, 139 + "versions": { 140 + "title": "Versionen", 141 + "collapse": "{tag} einklappen", 142 + "expand": "{tag} ausklappen", 143 + "collapse_other": "Andere Versionen einklappen", 144 + "expand_other": "Andere Versionen ausklappen", 145 + "collapse_major": "Major {major} einklappen", 146 + "expand_major": "Major {major} ausklappen", 147 + "other_versions": "Weitere Versionen", 148 + "more_tagged": "{count} weitere getaggt", 149 + "all_covered": "Alle Versionen sind durch obige Tags abgedeckt", 150 + "deprecated_title": "{version} (veraltet)" 151 + }, 152 + "dependencies": { 153 + "title": "Abhängigkeiten ({count})", 154 + "list_label": "Paketabhängigkeiten", 155 + "show_all": "alle {count} Deps anzeigen", 156 + "optional": "optional" 157 + }, 158 + "peer_dependencies": { 159 + "title": "Peer-Abhängigkeiten ({count})", 160 + "list_label": "Peer-Abhängigkeiten des Pakets", 161 + "show_all": "alle {count} Peer-Deps anzeigen" 162 + }, 163 + "optional_dependencies": { 164 + "title": "Optionale Abhängigkeiten ({count})", 165 + "list_label": "Optionale Abhängigkeiten des Pakets", 166 + "show_all": "alle {count} optionalen Deps anzeigen" 167 + }, 168 + "maintainers": { 169 + "title": "Maintainer", 170 + "list_label": "Paket-Maintainer", 171 + "you": "(du)", 172 + "via": "via {teams}", 173 + "remove_owner": "{name} als Owner entfernen", 174 + "username_to_add": "Benutzername zum Hinzufügen als Owner", 175 + "username_placeholder": "Benutzername...", 176 + "add_button": "Hinzufügen", 177 + "cancel_add": "Owner-Hinzufügung abbrechen", 178 + "add_owner": "+ Owner hinzufügen" 179 + }, 180 + "downloads": { 181 + "title": "Wöchentliche Downloads", 182 + "date_range": "{start} bis {end}", 183 + "analyze": "Downloads analysieren", 184 + "modal_title": "Downloads", 185 + "granularity": "Granularität", 186 + "granularity_daily": "Täglich", 187 + "granularity_weekly": "Wöchentlich", 188 + "granularity_monthly": "Monatlich", 189 + "granularity_yearly": "Jährlich", 190 + "start_date": "Start", 191 + "end_date": "Ende", 192 + "no_data": "Keine Download-Daten verfügbar", 193 + "loading": "Lädt...", 194 + "y_axis_label": "{granularity} Downloads" 195 + }, 196 + "install_scripts": { 197 + "title": "Installationsskripte", 198 + "script_label": "(Skript)", 199 + "npx_packages": "{count} npx-Paket | {count} npx-Pakete", 200 + "currently": "aktuell {version}" 201 + }, 202 + "playgrounds": { 203 + "title": "Ausprobieren", 204 + "choose": "Playground wählen" 205 + }, 206 + "license": { 207 + "view_spdx": "Lizenztext auf SPDX ansehen" 208 + }, 209 + "vulnerabilities": { 210 + "no_description": "Keine Beschreibung verfügbar", 211 + "found": "{count} Sicherheitslücke gefunden | {count} Sicherheitslücken gefunden", 212 + "no_summary": "Keine Zusammenfassung", 213 + "view_details": "Details zur Sicherheitslücke anzeigen", 214 + "severity": { 215 + "critical": "kritisch", 216 + "high": "hoch", 217 + "moderate": "mittel", 218 + "low": "niedrig" 219 + } 220 + }, 221 + "access": { 222 + "title": "Team-Zugriff", 223 + "refresh": "Team-Zugriff aktualisieren", 224 + "list_label": "Team-Zugriffsliste", 225 + "owner": "Owner", 226 + "rw": "lesen/schreiben", 227 + "ro": "nur lesen", 228 + "revoke_access": "Zugriff von {name} entziehen", 229 + "no_access": "Kein Team-Zugriff konfiguriert", 230 + "select_team_label": "Team auswählen", 231 + "loading_teams": "Teams werden geladen...", 232 + "select_team": "Team auswählen", 233 + "permission_label": "Berechtigungsstufe", 234 + "permission": { 235 + "read_only": "nur Lesen", 236 + "read_write": "Lesen/Schreiben" 237 + }, 238 + "grant_button": "Gewähren", 239 + "cancel_grant": "Zugriffsvergabe abbrechen", 240 + "grant_access": "+ Team-Zugriff gewähren" 241 + }, 242 + "list": { 243 + "filter_label": "Pakete filtern", 244 + "filter_placeholder": "Pakete filtern...", 245 + "sort_label": "Pakete sortieren", 246 + "showing_count": "Zeige {filtered} von {total} Paketen" 247 + }, 248 + "skeleton": { 249 + "loading": "Paketdetails werden geladen", 250 + "license": "Lizenz", 251 + "weekly": "Wöchentlich", 252 + "size": "Größe", 253 + "deps": "Deps", 254 + "updated": "Aktualisiert", 255 + "install": "Installieren", 256 + "readme": "Readme", 257 + "maintainers": "Maintainer", 258 + "keywords": "Schlüsselwörter", 259 + "versions": "Versionen", 260 + "dependencies": "Abhängigkeiten" 261 + }, 262 + "sort": { 263 + "downloads": "Meiste Downloads", 264 + "updated": "Zuletzt aktualisiert", 265 + "name_asc": "Name (A-Z)", 266 + "name_desc": "Name (Z-A)" 267 + } 268 + }, 269 + "connector": { 270 + "status": { 271 + "connecting": "Verbinde...", 272 + "connected_as": "verbunden als {'@'}{user}", 273 + "connected": "verbunden", 274 + "connect_cli": "Lokale CLI verbinden", 275 + "aria_connecting": "Verbindung zum lokalen Connector wird hergestellt", 276 + "aria_connected": "Mit lokalem Connector verbunden", 277 + "aria_click_to_connect": "Klicken, um mit lokalem Connector zu verbinden", 278 + "avatar_alt": "Avatar von {user}" 279 + }, 280 + "modal": { 281 + "title": "Lokaler Connector", 282 + "close_modal": "Modal schließen", 283 + "connected": "Verbunden", 284 + "logged_in_as": "Angemeldet als {'@'}{user}", 285 + "connected_hint": "Du kannst jetzt Pakete und Organisationen über die Web-Oberfläche verwalten.", 286 + "disconnect": "Trennen", 287 + "run_hint": "Führe den Connector auf deinem Rechner aus, um Admin-Funktionen zu aktivieren.", 288 + "copy_command": "Befehl kopieren", 289 + "copied": "Kopiert", 290 + "paste_token": "Füge dann den Token unten ein, um dich zu verbinden:", 291 + "token_label": "Token", 292 + "token_placeholder": "Token hier einfügen...", 293 + "advanced": "Erweiterte Optionen", 294 + "port_label": "Port", 295 + "warning": "WARNUNG", 296 + "warning_text": "Dies erlaubt npmx Zugriff auf deine npm CLI. Verbinde dich nur mit Seiten, denen du vertraust.", 297 + "connect": "Verbinden", 298 + "connecting": "Verbinde..." 299 + } 300 + }, 301 + "operations": { 302 + "queue": { 303 + "title": "Operations-Warteschlange", 304 + "clear_all": "Alle löschen", 305 + "refresh": "Operationen aktualisieren", 306 + "empty": "Keine Operationen in der Warteschlange", 307 + "empty_hint": "Füge Operationen von Paket- oder Org-Seiten hinzu", 308 + "active_label": "Aktive Operationen", 309 + "otp_required": "OTP erforderlich", 310 + "otp_prompt": "OTP eingeben, um fortzufahren", 311 + "otp_placeholder": "OTP-Code eingeben...", 312 + "otp_label": "Einmalpasswort", 313 + "retry_otp": "Mit OTP wiederholen", 314 + "retrying": "Wird wiederholt...", 315 + "approve_operation": "Operation genehmigen", 316 + "remove_operation": "Operation entfernen", 317 + "approve_all": "Alle genehmigen", 318 + "execute": "Ausführen", 319 + "executing": "Wird ausgeführt...", 320 + "log": "Log", 321 + "log_label": "Log abgeschlossener Operationen", 322 + "remove_from_log": "Aus Log entfernen" 323 + } 324 + }, 325 + "org": { 326 + "teams": { 327 + "title": "Teams", 328 + "refresh": "Teams aktualisieren", 329 + "filter_label": "Teams filtern", 330 + "filter_placeholder": "Teams filtern...", 331 + "sort_by": "Sortieren nach", 332 + "loading": "Teams werden geladen...", 333 + "no_teams": "Keine Teams gefunden", 334 + "list_label": "Teams der Organisation", 335 + "delete_team": "Team {name} löschen", 336 + "member_count": "{count} Mitglied | {count} Mitglieder", 337 + "members_of": "Mitglieder von {team}", 338 + "no_members": "Keine Mitglieder", 339 + "remove_user": "{user} aus Team entfernen", 340 + "username_to_add": "Benutzername zum Hinzufügen zu {team}", 341 + "username_placeholder": "Benutzername...", 342 + "add_button": "Hinzufügen", 343 + "cancel_add_user": "Benutzer-Hinzufügung abbrechen", 344 + "add_member": "+ Mitglied hinzufügen", 345 + "team_name_label": "Teamname", 346 + "team_name_placeholder": "teamname...", 347 + "create_button": "Erstellen", 348 + "no_match": "Keine Teams entsprechen \"{query}\"", 349 + "cancel_create": "Team-Erstellung abbrechen", 350 + "create_team": "+ Team erstellen" 351 + }, 352 + "members": { 353 + "title": "Mitglieder", 354 + "refresh": "Mitglieder aktualisieren", 355 + "filter_label": "Mitglieder filtern", 356 + "filter_placeholder": "Mitglieder filtern...", 357 + "filter_by_role": "Nach Rolle filtern", 358 + "filter_by_team": "Nach Team filtern", 359 + "all_teams": "Alle Teams", 360 + "sort_by": "Sortieren nach", 361 + "loading": "Mitglieder werden geladen...", 362 + "no_members": "Keine Mitglieder gefunden", 363 + "list_label": "Mitglieder der Organisation", 364 + "change_role_for": "Rolle von {name} ändern", 365 + "remove_from_org": "{name} aus Organisation entfernen", 366 + "view_team": "Team {team} anzeigen", 367 + "no_match": "Keine Mitglieder entsprechen deinen Filtern", 368 + "username_label": "Benutzername", 369 + "username_placeholder": "Benutzername...", 370 + "role_label": "Rolle", 371 + "role": { 372 + "all": "Alle", 373 + "developer": "Entwickler", 374 + "admin": "Admin", 375 + "owner": "Owner" 376 + }, 377 + "team_label": "Team", 378 + "no_team": "Kein Team", 379 + "add_button": "Hinzufügen", 380 + "cancel_add": "Mitglied-Hinzufügung abbrechen", 381 + "add_member": "+ Mitglied hinzufügen" 382 + }, 383 + "public_packages": "{count} öffentliches Paket | {count} öffentliche Pakete", 384 + "page": { 385 + "packages_title": "Pakete", 386 + "members_tab": "Mitglieder", 387 + "teams_tab": "Teams", 388 + "no_packages": "Keine öffentlichen Pakete gefunden für", 389 + "no_packages_hint": "Diese Organisation existiert möglicherweise nicht oder hat keine öffentlichen Pakete.", 390 + "failed_to_load": "Organisation-Pakete konnten nicht geladen werden", 391 + "no_match": "Keine Pakete entsprechen \"{query}\"", 392 + "not_found": "Organisation nicht gefunden", 393 + "not_found_message": "Die Organisation \"{'@'}{name}\" existiert nicht auf npm", 394 + "filter_placeholder": "{count} Pakete filtern..." 395 + } 396 + }, 397 + "user": { 398 + "combobox": { 399 + "add_to_org_hint": "(wird auch zur Org hinzugefügt)", 400 + "press_enter_to_add": "Enter drücken, um {'@'}{username} hinzuzufügen", 401 + "default_placeholder": "Benutzername...", 402 + "suggestions_label": "Benutzervorschläge" 403 + }, 404 + "page": { 405 + "packages_title": "Pakete", 406 + "no_packages": "Keine öffentlichen Pakete gefunden für", 407 + "no_packages_hint": "Dieser Benutzer existiert möglicherweise nicht oder hat keine öffentlichen Pakete.", 408 + "failed_to_load": "Benutzer-Pakete konnten nicht geladen werden", 409 + "no_match": "Keine Pakete entsprechen \"{query}\"", 410 + "filter_placeholder": "{count} Pakete filtern..." 411 + }, 412 + "orgs_page": { 413 + "title": "Organisationen", 414 + "back_to_profile": "Zurück zum Profil", 415 + "connect_required": "Verbinde die lokale CLI, um deine Organisationen zu sehen.", 416 + "connect_hint_prefix": "Führe", 417 + "connect_hint_suffix": "aus, um zu starten.", 418 + "own_orgs_only": "Du kannst nur deine eigenen Organisationen sehen.", 419 + "view_your_orgs": "Deine Organisationen anzeigen", 420 + "loading": "Organisationen werden geladen...", 421 + "empty": "Keine Organisationen gefunden.", 422 + "empty_hint": "Organisationen werden aus deinen Scoped-Paketen erkannt.", 423 + "count": "{count} Organisation | {count} Organisationen", 424 + "packages_count": "{count} Paket | {count} Pakete" 425 + } 426 + }, 427 + "claim": { 428 + "modal": { 429 + "title": "Paketnamen beanspruchen", 430 + "close_modal": "Modal schließen", 431 + "success": "Paket beansprucht!", 432 + "success_detail": "{name}{'@'}0.0.0 wurde auf npm veröffentlicht.", 433 + "success_hint": "Du kannst jetzt neue Versionen dieses Pakets mit npm publish veröffentlichen.", 434 + "view_package": "Paket anzeigen", 435 + "invalid_name": "Ungültiger Paketname:", 436 + "available": "Dieser Name ist verfügbar!", 437 + "taken": "Dieser Name ist bereits vergeben.", 438 + "similar_warning": "Ähnliche Pakete existieren - npm könnte diesen Namen ablehnen:", 439 + "related": "Verwandte Pakete:", 440 + "scope_warning_title": "Erwäge stattdessen ein Scoped-Paket", 441 + "scope_warning_text": "Unscoped-Paketnamen sind eine gemeinsame Ressource. Beanspruche einen Namen nur, wenn du vorhast, ein Paket zu veröffentlichen und zu pflegen. Für persönliche oder Organisationsprojekte nutze einen Scoped-Namen wie {'@'}{username}/{name}.", 442 + "connect_required": "Verbinde dich mit dem lokalen Connector, um diesen Paketnamen zu beanspruchen.", 443 + "connect_button": "Mit Connector verbinden", 444 + "publish_hint": "Dies veröffentlicht ein minimales Platzhalter-Paket.", 445 + "preview_json": "package.json Vorschau", 446 + "claim_button": "Paketnamen beanspruchen", 447 + "publishing": "Wird veröffentlicht...", 448 + "checking": "Verfügbarkeit wird geprüft...", 449 + "failed_to_check": "Namensverfügbarkeit konnte nicht geprüft werden", 450 + "failed_to_claim": "Paket konnte nicht beansprucht werden" 451 + } 452 + }, 453 + "code": { 454 + "files_label": "Dateien", 455 + "no_files": "Keine Dateien in diesem Verzeichnis", 456 + "select_version": "Version auswählen", 457 + "root": "Wurzel", 458 + "lines": "{count} Zeilen", 459 + "toggle_tree": "Dateibaum umschalten", 460 + "close_tree": "Dateibaum schließen", 461 + "copy_link": "Link kopieren", 462 + "raw": "Roh", 463 + "view_raw": "Rohdatei anzeigen", 464 + "file_too_large": "Datei zu groß für Vorschau", 465 + "file_size_warning": "{size} überschreitet das 500KB-Limit für Syntax-Highlighting", 466 + "load_anyway": "Trotzdem laden", 467 + "failed_to_load": "Datei konnte nicht geladen werden", 468 + "unavailable_hint": "Die Datei ist möglicherweise zu groß oder nicht verfügbar", 469 + "version_required": "Version erforderlich, um Code zu durchsuchen", 470 + "go_to_package": "Zum Paket", 471 + "loading_tree": "Dateibaum wird geladen...", 472 + "failed_to_load_tree": "Dateien für diese Paketversion konnten nicht geladen werden", 473 + "back_to_package": "Zurück zum Paket", 474 + "table": { 475 + "name": "Name", 476 + "size": "Größe" 477 + } 478 + }, 479 + "badges": { 480 + "provenance": { 481 + "verified": "verifiziert", 482 + "verified_title": "Verifizierte Herkunft", 483 + "verified_via": "Verifiziert: veröffentlicht via {provider}" 484 + }, 485 + "jsr": { 486 + "title": "auch auf JSR verfügbar", 487 + "label": "JSR" 488 + } 489 + }, 490 + "about": { 491 + "title": "Über uns", 492 + "heading": "Über uns", 493 + "meta_description": "npmx ist ein schneller, moderner Browser für die npm Registry. Ein besseres UX/DX zum Erkunden von npm-Paketen.", 494 + "back_home": "zurück zur Startseite", 495 + "what_we_are": { 496 + "title": "Was wir sind", 497 + "better_ux_dx": "bessere UX/DX", 498 + "admin_ui": "Admin-UI", 499 + "description": "npmx ist eine {betterUxDx} für die npm-Paket-Registry und Tooling. Wir bieten eine schnelle, moderne Oberfläche zum Erkunden von Paketen mit Features wie Dark Mode, Tastaturnavigation, Code-Browsing und Verbindungen zu alternativen Registries wie {jsr}.", 500 + "admin_description": "Wir wollen auch eine bessere {adminUi} zum Verwalten deiner Pakete, Teams und Organisationen bieten — alles im Browser, angetrieben von deiner lokalen npm CLI." 501 + }, 502 + "what_we_are_not": { 503 + "title": "Was wir nicht sind", 504 + "not_package_manager": "Kein Paketmanager.", 505 + "not_registry": "Keine Registry.", 506 + "registry_description": "Wir hosten keine Pakete. Wir sind nur ein besserer Weg, sie zu durchstöbern.", 507 + "package_managers_exist": "{already} {people} {building} {really} {cool} {package} {managers}.", 508 + "words": { 509 + "already": "Es gibt", 510 + "people": "bereits", 511 + "building": "Leute, die", 512 + "really": "richtig", 513 + "cool": "coole", 514 + "package": "Paketmanager", 515 + "managers": "bauen" 516 + } 517 + } 518 + }, 519 + "header": { 520 + "home": "npmx Startseite", 521 + "github": "GitHub", 522 + "packages": "Pakete", 523 + "packages_dropdown": { 524 + "title": "Deine Pakete", 525 + "loading": "Lädt...", 526 + "error": "Pakete konnten nicht geladen werden", 527 + "empty": "Keine Pakete gefunden", 528 + "view_all": "Alle anzeigen" 529 + }, 530 + "orgs": "Orgs", 531 + "orgs_dropdown": { 532 + "title": "Deine Organisationen", 533 + "loading": "Lädt...", 534 + "error": "Organisationen konnten nicht geladen werden", 535 + "empty": "Keine Organisationen gefunden", 536 + "view_all": "Alle anzeigen" 537 + } 538 + } 539 + }
+588
lunaria/files/en-US.json
··· 1 + { 2 + "seo": { 3 + "home": { 4 + "title": "npmx - Package Browser for the npm Registry", 5 + "description": "A better browser for the npm registry. Search, browse, and explore packages with a modern interface." 6 + } 7 + }, 8 + "tagline": "a better browser for the npm registry", 9 + "non_affiliation_disclaimer": "not affiliated with npm, Inc.", 10 + "trademark_disclaimer": "npm is a registered trademark of npm, Inc. This site is not affiliated with npm, Inc.", 11 + "footer": { 12 + "about": "about", 13 + "docs": "docs", 14 + "source": "source", 15 + "social": "social", 16 + "chat": "chat" 17 + }, 18 + "search": { 19 + "label": "Search npm packages", 20 + "placeholder": "search packages...", 21 + "button": "search", 22 + "clear": "Clear search", 23 + "searching": "Searching...", 24 + "found_packages": "Found {count} packages", 25 + "updating": "(updating...)", 26 + "no_results": "No packages found for \"{query}\"", 27 + "not_taken": "{name} is not taken", 28 + "claim_prompt": "Claim this package name on npm", 29 + "claim_button": "Claim \"{name}\"", 30 + "want_to_claim": "Want to claim this package name?", 31 + "start_typing": "Start typing to search packages", 32 + "exact_match": "exact", 33 + "suggestion": { 34 + "user": "user", 35 + "org": "org", 36 + "view_user_packages": "View packages by this user", 37 + "view_org_packages": "View packages by this organization" 38 + } 39 + }, 40 + "nav": { 41 + "popular_packages": "Popular packages", 42 + "search": "search", 43 + "settings": "settings", 44 + "back": "Back" 45 + }, 46 + "settings": { 47 + "relative_dates": "Relative dates", 48 + "include_types": "Include {'@'}types in install", 49 + "theme": "Theme", 50 + "theme_light": "Light", 51 + "theme_dark": "Dark", 52 + "theme_system": "System", 53 + "language": "Language", 54 + "help_translate": "Help translate npmx", 55 + "accent_colors": "Accent colors" 56 + }, 57 + "common": { 58 + "loading": "Loading...", 59 + "loading_more": "Loading more...", 60 + "loading_packages": "Loading packages...", 61 + "end_of_results": "End of results", 62 + "try_again": "Try again", 63 + "close": "Close", 64 + "retry": "Retry", 65 + "copy": "copy", 66 + "copied": "copied!", 67 + "show_more": "show more", 68 + "warnings": "Warnings:", 69 + "go_back_home": "Go back home", 70 + "view_on_npm": "view on npm", 71 + "per_week": "/ week", 72 + "sort": { 73 + "name": "name", 74 + "role": "role", 75 + "members": "members" 76 + }, 77 + "scroll_to_top": "Scroll to top" 78 + }, 79 + "package": { 80 + "not_found": "Package Not Found", 81 + "not_found_message": "The package could not be found.", 82 + "no_description": "No description provided", 83 + "show_full_description": "Show full description", 84 + "not_latest": "(not latest)", 85 + "verified_provenance": "Verified provenance", 86 + "view_permalink": "View permalink for this version", 87 + "deprecation": { 88 + "package": "This package has been deprecated.", 89 + "version": "This version has been deprecated.", 90 + "no_reason": "No reason provided" 91 + }, 92 + "stats": { 93 + "license": "License", 94 + "weekly": "Weekly", 95 + "deps": "Deps", 96 + "install_size": "Install Size", 97 + "updated": "Updated", 98 + "view_download_trends": "View download trends", 99 + "view_dependency_graph": "View dependency graph", 100 + "inspect_dependency_tree": "Inspect dependency tree" 101 + }, 102 + "links": { 103 + "repo": "repo", 104 + "homepage": "homepage", 105 + "issues": "issues", 106 + "forks": "fork | forks", 107 + "jsr": "jsr", 108 + "code": "code", 109 + "docs": "docs", 110 + "fund": "fund" 111 + }, 112 + "get_started": { 113 + "title": "Get started", 114 + "pm_label": "Package manager", 115 + "copy_command": "Copy install command", 116 + "view_types": "View {package}" 117 + }, 118 + "create": { 119 + "title": "Create new project", 120 + "copy_command": "Copy create command" 121 + }, 122 + "run": { 123 + "title": "Run", 124 + "locally": "Run locally" 125 + }, 126 + "readme": { 127 + "title": "Readme", 128 + "no_readme": "No README available.", 129 + "view_on_github": "View on GitHub" 130 + }, 131 + "keywords_title": "Keywords", 132 + "compatibility": "Compatibility", 133 + "card": { 134 + "publisher": "Publisher", 135 + "updated": "Updated", 136 + "weekly_downloads": "Weekly downloads", 137 + "keywords": "Keywords", 138 + "license": "License" 139 + }, 140 + "versions": { 141 + "title": "Versions", 142 + "collapse": "Collapse {tag}", 143 + "expand": "Expand {tag}", 144 + "collapse_other": "Collapse other versions", 145 + "expand_other": "Expand other versions", 146 + "collapse_major": "Collapse major {major}", 147 + "expand_major": "Expand major {major}", 148 + "other_versions": "Other versions", 149 + "more_tagged": "{count} more tagged", 150 + "all_covered": "All versions are covered by tags above", 151 + "deprecated_title": "{version} (deprecated)" 152 + }, 153 + "dependencies": { 154 + "title": "Dependencies ({count})", 155 + "list_label": "Package dependencies", 156 + "show_all": "show all {count} deps", 157 + "optional": "optional" 158 + }, 159 + "peer_dependencies": { 160 + "title": "Peer Dependencies ({count})", 161 + "list_label": "Package peer dependencies", 162 + "show_all": "show all {count} peer deps" 163 + }, 164 + "optional_dependencies": { 165 + "title": "Optional Dependencies ({count})", 166 + "list_label": "Package optional dependencies", 167 + "show_all": "show all {count} optional deps" 168 + }, 169 + "maintainers": { 170 + "title": "Maintainers", 171 + "list_label": "Package maintainers", 172 + "you": "(you)", 173 + "via": "via {teams}", 174 + "remove_owner": "Remove {name} as owner", 175 + "username_to_add": "Username to add as owner", 176 + "username_placeholder": "username...", 177 + "add_button": "add", 178 + "cancel_add": "Cancel adding owner", 179 + "add_owner": "+ Add owner" 180 + }, 181 + "downloads": { 182 + "title": "Weekly Downloads", 183 + "date_range": "{start} to {end}", 184 + "analyze": "Analyze downloads", 185 + "modal_title": "Downloads", 186 + "granularity": "Granularity", 187 + "granularity_daily": "Daily", 188 + "granularity_weekly": "Weekly", 189 + "granularity_monthly": "Monthly", 190 + "granularity_yearly": "Yearly", 191 + "start_date": "Start", 192 + "end_date": "End", 193 + "no_data": "No download data available", 194 + "loading": "Loading...", 195 + "y_axis_label": "{granularity} downloads" 196 + }, 197 + "install_scripts": { 198 + "title": "Install Scripts", 199 + "script_label": "(script)", 200 + "npx_packages": "{count} npx package | {count} npx packages", 201 + "currently": "currently {version}" 202 + }, 203 + "playgrounds": { 204 + "title": "Try it out", 205 + "choose": "choose playground" 206 + }, 207 + "metrics": { 208 + "esm": "ES Modules supported", 209 + "cjs": "CommonJS supported", 210 + "no_esm": "No ES Modules support", 211 + "types_included": "Types included", 212 + "types_available": "Types available via {package}", 213 + "no_types": "No TypeScript types" 214 + }, 215 + "license": { 216 + "view_spdx": "View license text on SPDX" 217 + }, 218 + "vulnerabilities": { 219 + "no_description": "No description available", 220 + "found": "{count} vulnerability found | {count} vulnerabilities found", 221 + "deps_found": "{count} vulnerability found | {count} vulnerabilities found", 222 + "deps_affected": "{count} dependency affected | {count} dependencies affected", 223 + "tree_found": "{vulns} vulnerability in {packages}/{total} packages | {vulns} vulnerabilities in {packages}/{total} packages", 224 + "scanning_tree": "Scanning dependency tree...", 225 + "show_all_packages": "show all {count} affected packages", 226 + "no_summary": "No summary", 227 + "view_details": "View vulnerability details", 228 + "path": "path", 229 + "more": "+{count} more", 230 + "packages_failed": "{count} package could not be checked | {count} packages could not be checked", 231 + "no_known": "No known vulnerabilities in {count} packages", 232 + "scan_failed": "Could not scan for vulnerabilities", 233 + "depth": { 234 + "root": "This package", 235 + "direct": "Direct dependency", 236 + "transitive": "Transitive dependency (indirect)" 237 + }, 238 + "severity": { 239 + "critical": "critical", 240 + "high": "high", 241 + "moderate": "moderate", 242 + "low": "low" 243 + } 244 + }, 245 + "access": { 246 + "title": "Team Access", 247 + "refresh": "Refresh team access", 248 + "list_label": "Team access list", 249 + "owner": "owner", 250 + "rw": "rw", 251 + "ro": "ro", 252 + "revoke_access": "Revoke {name} access", 253 + "no_access": "No team access configured", 254 + "select_team_label": "Select team", 255 + "loading_teams": "Loading teams...", 256 + "select_team": "Select team", 257 + "permission_label": "Permission level", 258 + "permission": { 259 + "read_only": "read-only", 260 + "read_write": "read-write" 261 + }, 262 + "grant_button": "grant", 263 + "cancel_grant": "Cancel granting access", 264 + "grant_access": "+ Grant team access" 265 + }, 266 + "list": { 267 + "filter_label": "Filter packages", 268 + "filter_placeholder": "Filter packages...", 269 + "sort_label": "Sort packages", 270 + "showing_count": "Showing {filtered} of {total} packages" 271 + }, 272 + "skeleton": { 273 + "loading": "Loading package details", 274 + "license": "License", 275 + "weekly": "Weekly", 276 + "size": "Size", 277 + "deps": "Deps", 278 + "updated": "Updated", 279 + "install": "Install", 280 + "readme": "Readme", 281 + "maintainers": "Maintainers", 282 + "keywords": "Keywords", 283 + "versions": "Versions", 284 + "dependencies": "Dependencies" 285 + }, 286 + "sort": { 287 + "downloads": "Most downloaded", 288 + "updated": "Recently updated", 289 + "name_asc": "Name (A-Z)", 290 + "name_desc": "Name (Z-A)" 291 + } 292 + }, 293 + "connector": { 294 + "status": { 295 + "connecting": "connecting...", 296 + "connected_as": "connected as {'@'}{user}", 297 + "connected": "connected", 298 + "connect_cli": "connect local CLI", 299 + "aria_connecting": "Connecting to local connector", 300 + "aria_connected": "Connected to local connector", 301 + "aria_click_to_connect": "Click to connect to local connector", 302 + "avatar_alt": "{user}'s avatar" 303 + }, 304 + "modal": { 305 + "title": "Local Connector", 306 + "close_modal": "Close modal", 307 + "connected": "Connected", 308 + "logged_in_as": "Logged in as {'@'}{user}", 309 + "connected_hint": "You can now manage packages and organizations from the web UI.", 310 + "disconnect": "Disconnect", 311 + "run_hint": "Run the connector on your machine to enable admin features.", 312 + "copy_command": "Copy command", 313 + "copied": "Copied", 314 + "paste_token": "Then paste the token below to connect:", 315 + "token_label": "Token", 316 + "token_placeholder": "paste token here...", 317 + "advanced": "Advanced options", 318 + "port_label": "Port", 319 + "warning": "WARNING", 320 + "warning_text": "This allows npmx to access your npm CLI. Only connect to sites you trust.", 321 + "connect": "Connect", 322 + "connecting": "Connecting..." 323 + } 324 + }, 325 + "operations": { 326 + "queue": { 327 + "title": "Operations Queue", 328 + "clear_all": "clear all", 329 + "refresh": "Refresh operations", 330 + "empty": "No operations queued", 331 + "empty_hint": "Add operations from package or org pages", 332 + "active_label": "Active operations", 333 + "otp_required": "OTP required", 334 + "otp_prompt": "Enter OTP to continue", 335 + "otp_placeholder": "Enter OTP code...", 336 + "otp_label": "One-time password", 337 + "retry_otp": "Retry with OTP", 338 + "retrying": "Retrying...", 339 + "approve_operation": "Approve operation", 340 + "remove_operation": "Remove operation", 341 + "approve_all": "Approve All", 342 + "execute": "Execute", 343 + "executing": "Executing...", 344 + "log": "Log", 345 + "log_label": "Completed operations log", 346 + "remove_from_log": "Remove from log" 347 + } 348 + }, 349 + "org": { 350 + "teams": { 351 + "title": "Teams", 352 + "refresh": "Refresh teams", 353 + "filter_label": "Filter teams", 354 + "filter_placeholder": "Filter teams...", 355 + "sort_by": "Sort by", 356 + "loading": "Loading teams...", 357 + "no_teams": "No teams found", 358 + "list_label": "Organization teams", 359 + "delete_team": "Delete team {name}", 360 + "member_count": "{count} member | {count} members", 361 + "members_of": "Members of {team}", 362 + "no_members": "No members", 363 + "remove_user": "Remove {user} from team", 364 + "username_to_add": "Username to add to {team}", 365 + "username_placeholder": "username...", 366 + "add_button": "add", 367 + "cancel_add_user": "Cancel adding user", 368 + "add_member": "+ Add member", 369 + "team_name_label": "Team name", 370 + "team_name_placeholder": "team-name...", 371 + "create_button": "create", 372 + "no_match": "No teams match \"{query}\"", 373 + "cancel_create": "Cancel creating team", 374 + "create_team": "+ Create team" 375 + }, 376 + "members": { 377 + "title": "Members", 378 + "refresh": "Refresh members", 379 + "filter_label": "Filter members", 380 + "filter_placeholder": "Filter members...", 381 + "filter_by_role": "Filter by role", 382 + "filter_by_team": "Filter by team", 383 + "all_teams": "all teams", 384 + "sort_by": "Sort by", 385 + "loading": "Loading members...", 386 + "no_members": "No members found", 387 + "list_label": "Organization members", 388 + "change_role_for": "Change role for {name}", 389 + "remove_from_org": "Remove {name} from org", 390 + "view_team": "View {team} team", 391 + "no_match": "No members match your filters", 392 + "username_label": "Username", 393 + "username_placeholder": "username...", 394 + "role_label": "Role", 395 + "role": { 396 + "all": "all", 397 + "developer": "developer", 398 + "admin": "admin", 399 + "owner": "owner" 400 + }, 401 + "team_label": "Team", 402 + "no_team": "no team", 403 + "add_button": "add", 404 + "cancel_add": "Cancel adding member", 405 + "add_member": "+ Add member" 406 + }, 407 + "public_packages": "{count} public package | {count} public packages", 408 + "page": { 409 + "packages_title": "Packages", 410 + "members_tab": "Members", 411 + "teams_tab": "Teams", 412 + "no_packages": "No public packages found for", 413 + "no_packages_hint": "This organization may not exist or has no public packages.", 414 + "failed_to_load": "Failed to load organization packages", 415 + "no_match": "No packages match \"{query}\"", 416 + "not_found": "Organization not found", 417 + "not_found_message": "The organization \"{'@'}{name}\" does not exist on npm", 418 + "filter_placeholder": "Filter {count} packages..." 419 + } 420 + }, 421 + "user": { 422 + "combobox": { 423 + "add_to_org_hint": "(will also add to org)", 424 + "press_enter_to_add": "Press Enter to add {'@'}{username}", 425 + "default_placeholder": "username...", 426 + "suggestions_label": "User suggestions" 427 + }, 428 + "page": { 429 + "packages_title": "Packages", 430 + "no_packages": "No public packages found for", 431 + "no_packages_hint": "This user may not exist or has no public packages.", 432 + "failed_to_load": "Failed to load user packages", 433 + "no_match": "No packages match \"{query}\"", 434 + "filter_placeholder": "Filter {count} packages..." 435 + }, 436 + "orgs_page": { 437 + "title": "Organizations", 438 + "back_to_profile": "Back to profile", 439 + "connect_required": "Connect the local CLI to view your organizations.", 440 + "connect_hint_prefix": "Run", 441 + "connect_hint_suffix": "to get started.", 442 + "own_orgs_only": "You can only view your own organizations.", 443 + "view_your_orgs": "View your organizations", 444 + "loading": "Loading organizations...", 445 + "empty": "No organizations found.", 446 + "empty_hint": "Organizations are detected from your scoped packages.", 447 + "count": "{count} Organization | {count} Organizations", 448 + "packages_count": "{count} package | {count} packages" 449 + } 450 + }, 451 + "claim": { 452 + "modal": { 453 + "title": "Claim Package Name", 454 + "close_modal": "Close modal", 455 + "success": "Package claimed!", 456 + "success_detail": "{name}{'@'}0.0.0 has been published to npm.", 457 + "success_hint": "You can now publish new versions to this package using npm publish.", 458 + "view_package": "View Package", 459 + "invalid_name": "Invalid package name:", 460 + "available": "This name is available!", 461 + "taken": "This name is already taken.", 462 + "similar_warning": "Similar packages exist - npm may reject this name:", 463 + "related": "Related packages:", 464 + "scope_warning_title": "Consider using a scoped package instead", 465 + "scope_warning_text": "Unscoped package names are a shared resource. Only claim a name if you intend to publish and maintain a package. For personal or organizational projects, use a scoped name like {'@'}{username}/{name}.", 466 + "connect_required": "Connect to the local connector to claim this package name.", 467 + "connect_button": "Connect to Connector", 468 + "publish_hint": "This will publish a minimal placeholder package.", 469 + "preview_json": "Preview package.json", 470 + "claim_button": "Claim Package Name", 471 + "publishing": "Publishing...", 472 + "checking": "Checking availability...", 473 + "failed_to_check": "Failed to check name availability", 474 + "failed_to_claim": "Failed to claim package" 475 + } 476 + }, 477 + "code": { 478 + "files_label": "Files", 479 + "no_files": "No files in this directory", 480 + "select_version": "Select version", 481 + "root": "root", 482 + "lines": "{count} lines", 483 + "toggle_tree": "Toggle file tree", 484 + "close_tree": "Close file tree", 485 + "copy_link": "Copy link", 486 + "raw": "Raw", 487 + "view_raw": "View raw file", 488 + "file_too_large": "File too large to preview", 489 + "file_size_warning": "{size} exceeds the 500KB limit for syntax highlighting", 490 + "load_anyway": "Load anyway", 491 + "failed_to_load": "Failed to load file", 492 + "unavailable_hint": "The file may be too large or unavailable", 493 + "version_required": "Version is required to browse code", 494 + "go_to_package": "Go to package", 495 + "loading_tree": "Loading file tree...", 496 + "failed_to_load_tree": "Failed to load files for this package version", 497 + "back_to_package": "Back to package", 498 + "table": { 499 + "name": "Name", 500 + "size": "Size" 501 + } 502 + }, 503 + "badges": { 504 + "provenance": { 505 + "verified": "verified", 506 + "verified_title": "Verified provenance", 507 + "verified_via": "Verified: published via {provider}" 508 + }, 509 + "jsr": { 510 + "title": "also available on JSR", 511 + "label": "jsr" 512 + } 513 + }, 514 + "about": { 515 + "title": "About", 516 + "heading": "about", 517 + "meta_description": "npmx is a fast, modern browser for the npm registry. A better UX/DX for exploring npm packages.", 518 + "back_home": "back to home", 519 + "what_we_are": { 520 + "title": "What we are", 521 + "better_ux_dx": "better UX/DX", 522 + "admin_ui": "admin UI", 523 + "description": "npmx is a {betterUxDx} for the npm package registry and tooling. We provide a fast, modern interface for exploring packages, with features like dark mode, keyboard navigation, code browsing, and connections to alternative registries like {jsr}.", 524 + "admin_description": "We also aim to provide a better {adminUi} for managing your packages, teams, and organizations — all from the browser, powered by your local npm CLI." 525 + }, 526 + "what_we_are_not": { 527 + "title": "What we're not", 528 + "not_package_manager": "Not a package manager.", 529 + "not_registry": "Not a registry.", 530 + "registry_description": "We don't host packages. We're just a better way to browse them.", 531 + "package_managers_exist": "{already} {people} {building} {really} {cool} {package} {managers}.", 532 + "words": { 533 + "already": "There are", 534 + "people": "already", 535 + "building": "people", 536 + "really": "building", 537 + "cool": "really", 538 + "package": "cool", 539 + "managers": "package managers" 540 + } 541 + }, 542 + "contributors": { 543 + "title": "Contributors", 544 + "description": "npmx is fully open source, built by an amazing community of contributors.", 545 + "loading": "Loading contributors...", 546 + "error": "Failed to load contributors", 547 + "view_profile": "View {name}'s GitHub profile" 548 + }, 549 + "get_involved": { 550 + "title": "Get involved", 551 + "contribute": { 552 + "title": "Contribute", 553 + "description": "Help us build a better npm experience.", 554 + "cta": "View on GitHub" 555 + }, 556 + "community": { 557 + "title": "Join the community", 558 + "description": "Chat, ask questions, and share ideas.", 559 + "cta": "Join Discord" 560 + }, 561 + "follow": { 562 + "title": "Stay updated", 563 + "description": "Find out the latest on npmx.", 564 + "cta": "Follow on Bluesky" 565 + } 566 + } 567 + }, 568 + "header": { 569 + "home": "npmx home", 570 + "github": "GitHub", 571 + "packages": "packages", 572 + "packages_dropdown": { 573 + "title": "Your Packages", 574 + "loading": "Loading...", 575 + "error": "Failed to load packages", 576 + "empty": "No packages found", 577 + "view_all": "View all" 578 + }, 579 + "orgs": "orgs", 580 + "orgs_dropdown": { 581 + "title": "Your Organizations", 582 + "loading": "Loading...", 583 + "error": "Failed to load organizations", 584 + "empty": "No organizations found", 585 + "view_all": "View all" 586 + } 587 + } 588 + }
+580
lunaria/files/es-419.json
··· 1 + { 2 + "seo": { 3 + "home": { 4 + "title": "npmx - Navegador de Paquetes para el Registro de npm", 5 + "description": "Un mejor navegador para el registro de npm. Busca, navega y explora paquetes con una interfaz moderna." 6 + } 7 + }, 8 + "tagline": "un mejor navegador para el registro de npm", 9 + "non_affiliation_disclaimer": "no afiliado con npm, Inc.", 10 + "trademark_disclaimer": "npm es una marca registrada de npm, Inc. Este sitio no está afiliado con npm, Inc.", 11 + "footer": { 12 + "about": "acerca de", 13 + "docs": "documentación", 14 + "source": "código fuente", 15 + "social": "redes sociales", 16 + "chat": "chat" 17 + }, 18 + "search": { 19 + "label": "Buscar paquetes npm", 20 + "placeholder": "buscar paquetes...", 21 + "button": "buscar", 22 + "clear": "Limpiar búsqueda", 23 + "searching": "Buscando...", 24 + "found_packages": "{count} paquetes encontrados", 25 + "updating": "(actualizando...)", 26 + "no_results": "No se encontraron paquetes para \"{query}\"", 27 + "not_taken": "{name} está disponible", 28 + "claim_prompt": "Reclamar este nombre de paquete en npm", 29 + "claim_button": "Reclamar \"{name}\"", 30 + "want_to_claim": "¿Quieres reclamar este nombre de paquete?", 31 + "start_typing": "Comienza a escribir para buscar paquetes", 32 + "exact_match": "exacto", 33 + "suggestion": { 34 + "user": "usuario", 35 + "org": "organización", 36 + "view_user_packages": "Ver paquetes de este usuario", 37 + "view_org_packages": "Ver paquetes de esta organización" 38 + } 39 + }, 40 + "nav": { 41 + "popular_packages": "Paquetes populares", 42 + "search": "buscar", 43 + "settings": "configuración", 44 + "back": "Atrás" 45 + }, 46 + "settings": { 47 + "relative_dates": "Fechas relativas", 48 + "include_types": "Incluir {'@'}types en la instalación", 49 + "theme": "Tema", 50 + "theme_light": "Claro", 51 + "theme_dark": "Oscuro", 52 + "theme_system": "Sistema", 53 + "language": "Idioma", 54 + "help_translate": "Ayuda a traducir npmx", 55 + "accent_colors": "Colores de acento" 56 + }, 57 + "common": { 58 + "loading": "Cargando...", 59 + "loading_more": "Cargando más...", 60 + "loading_packages": "Cargando paquetes...", 61 + "end_of_results": "Fin de los resultados", 62 + "try_again": "Intentar de nuevo", 63 + "close": "Cerrar", 64 + "retry": "Reintentar", 65 + "copy": "copiar", 66 + "copied": "¡copiado!", 67 + "show_more": "mostrar más", 68 + "warnings": "Advertencias:", 69 + "go_back_home": "Volver al inicio", 70 + "view_on_npm": "ver en npm", 71 + "per_week": "/ semana", 72 + "sort": { 73 + "name": "nombre", 74 + "role": "rol", 75 + "members": "miembros" 76 + }, 77 + "scroll_to_top": "Volver arriba" 78 + }, 79 + "package": { 80 + "not_found": "Paquete No Encontrado", 81 + "not_found_message": "No se pudo encontrar el paquete.", 82 + "no_description": "Sin descripción disponible", 83 + "show_full_description": "Mostrar descripción completa", 84 + "not_latest": "(no es la última)", 85 + "verified_provenance": "Procedencia verificada", 86 + "view_permalink": "Ver enlace permanente de esta versión", 87 + "deprecation": { 88 + "package": "Este paquete ha sido descontinuado.", 89 + "version": "Esta versión ha sido descontinuada.", 90 + "no_reason": "No se proporcionó ninguna razón" 91 + }, 92 + "stats": { 93 + "license": "Licencia", 94 + "weekly": "Semanal", 95 + "deps": "Deps", 96 + "install_size": "Tamaño de Instalación", 97 + "updated": "Actualizado", 98 + "view_download_trends": "Ver tendencias de descarga", 99 + "view_dependency_graph": "Ver gráfico de dependencias", 100 + "inspect_dependency_tree": "Inspeccionar árbol de dependencias" 101 + }, 102 + "links": { 103 + "repo": "repositorio", 104 + "homepage": "página principal", 105 + "issues": "issues", 106 + "forks": "fork | forks", 107 + "jsr": "jsr", 108 + "code": "código", 109 + "docs": "documentación", 110 + "fund": "financiar" 111 + }, 112 + "get_started": { 113 + "title": "Comenzar", 114 + "pm_label": "Gestor de paquetes", 115 + "copy_command": "Copiar comando de instalación", 116 + "view_types": "Ver {package}" 117 + }, 118 + "create": { 119 + "title": "Crear nuevo proyecto", 120 + "copy_command": "Copiar comando de creación" 121 + }, 122 + "run": { 123 + "title": "Ejecutar", 124 + "locally": "Ejecutar localmente" 125 + }, 126 + "readme": { 127 + "title": "Léeme", 128 + "no_readme": "No hay README disponible.", 129 + "view_on_github": "Ver en GitHub" 130 + }, 131 + "keywords_title": "Palabras clave", 132 + "compatibility": "Compatibilidad", 133 + "card": { 134 + "publisher": "Publicador", 135 + "updated": "Actualizado", 136 + "weekly_downloads": "Descargas semanales", 137 + "keywords": "Palabras clave", 138 + "license": "Licencia" 139 + }, 140 + "versions": { 141 + "title": "Versiones", 142 + "collapse": "Contraer {tag}", 143 + "expand": "Expandir {tag}", 144 + "collapse_other": "Contraer otras versiones", 145 + "expand_other": "Expandir otras versiones", 146 + "collapse_major": "Contraer mayor {major}", 147 + "expand_major": "Expandir mayor {major}", 148 + "other_versions": "Otras versiones", 149 + "more_tagged": "{count} más etiquetadas", 150 + "all_covered": "Todas las versiones están cubiertas por las etiquetas anteriores", 151 + "deprecated_title": "{version} (descontinuada)" 152 + }, 153 + "dependencies": { 154 + "title": "Dependencias ({count})", 155 + "list_label": "Dependencias del paquete", 156 + "show_all": "mostrar todas las {count} deps", 157 + "optional": "opcional" 158 + }, 159 + "peer_dependencies": { 160 + "title": "Dependencias Peer ({count})", 161 + "list_label": "Dependencias peer del paquete", 162 + "show_all": "mostrar todas las {count} deps peer" 163 + }, 164 + "optional_dependencies": { 165 + "title": "Dependencias Opcionales ({count})", 166 + "list_label": "Dependencias opcionales del paquete", 167 + "show_all": "mostrar todas las {count} deps opcionales" 168 + }, 169 + "maintainers": { 170 + "title": "Mantenedores", 171 + "list_label": "Mantenedores del paquete", 172 + "you": "(tú)", 173 + "via": "vía {teams}", 174 + "remove_owner": "Remover a {name} como propietario", 175 + "username_to_add": "Nombre de usuario a agregar como propietario", 176 + "username_placeholder": "nombre de usuario...", 177 + "add_button": "agregar", 178 + "cancel_add": "Cancelar agregar propietario", 179 + "add_owner": "+ Agregar propietario" 180 + }, 181 + "downloads": { 182 + "title": "Descargas Semanales", 183 + "date_range": "{start} a {end}", 184 + "analyze": "Analizar descargas", 185 + "modal_title": "Descargas", 186 + "granularity": "Granularidad", 187 + "granularity_daily": "Diaria", 188 + "granularity_weekly": "Semanal", 189 + "granularity_monthly": "Mensual", 190 + "granularity_yearly": "Anual", 191 + "start_date": "Inicio", 192 + "end_date": "Fin", 193 + "no_data": "No hay datos de descarga disponibles", 194 + "loading": "Cargando...", 195 + "y_axis_label": "Descargas {granularity}" 196 + }, 197 + "install_scripts": { 198 + "title": "Scripts de Instalación", 199 + "script_label": "(script)", 200 + "npx_packages": "{count} paquete npx | {count} paquetes npx", 201 + "currently": "actualmente {version}" 202 + }, 203 + "playgrounds": { 204 + "title": "Pruébalo", 205 + "choose": "elegir playground" 206 + }, 207 + "license": { 208 + "view_spdx": "Ver texto de licencia en SPDX" 209 + }, 210 + "vulnerabilities": { 211 + "no_description": "Sin descripción disponible", 212 + "found": "{count} vulnerabilidad encontrada | {count} vulnerabilidades encontradas", 213 + "deps_found": "{count} vulnerabilidad encontrada | {count} vulnerabilidades encontradas", 214 + "deps_affected": "{count} dependencia afectada | {count} dependencias afectadas", 215 + "tree_found": "{vulns} vulnerabilidad en {packages}/{total} paquetes | {vulns} vulnerabilidades en {packages}/{total} paquetes", 216 + "scanning_tree": "Escaneando árbol de dependencias...", 217 + "show_all_packages": "mostrar todos los {count} paquetes afectados", 218 + "no_summary": "Sin resumen", 219 + "view_details": "Ver detalles de vulnerabilidad", 220 + "path": "ruta", 221 + "more": "+{count} más", 222 + "packages_failed": "{count} paquete no pudo ser verificado | {count} paquetes no pudieron ser verificados", 223 + "no_known": "Sin vulnerabilidades conocidas en {count} paquetes", 224 + "scan_failed": "No se pudo escanear en busca de vulnerabilidades", 225 + "depth": { 226 + "root": "Este paquete", 227 + "direct": "Dependencia directa", 228 + "transitive": "Dependencia transitiva (indirecta)" 229 + }, 230 + "severity": { 231 + "critical": "crítica", 232 + "high": "alta", 233 + "moderate": "moderada", 234 + "low": "baja" 235 + } 236 + }, 237 + "access": { 238 + "title": "Acceso de Equipos", 239 + "refresh": "Actualizar acceso de equipos", 240 + "list_label": "Lista de acceso de equipos", 241 + "owner": "propietario", 242 + "rw": "lec/esc", 243 + "ro": "solo lec", 244 + "revoke_access": "Revocar acceso de {name}", 245 + "no_access": "Sin acceso de equipos configurado", 246 + "select_team_label": "Seleccionar equipo", 247 + "loading_teams": "Cargando equipos...", 248 + "select_team": "Seleccionar equipo", 249 + "permission_label": "Nivel de permiso", 250 + "permission": { 251 + "read_only": "solo lectura", 252 + "read_write": "lectura-escritura" 253 + }, 254 + "grant_button": "otorgar", 255 + "cancel_grant": "Cancelar otorgar acceso", 256 + "grant_access": "+ Otorgar acceso de equipo" 257 + }, 258 + "list": { 259 + "filter_label": "Filtrar paquetes", 260 + "filter_placeholder": "Filtrar paquetes...", 261 + "sort_label": "Ordenar paquetes", 262 + "showing_count": "Mostrando {filtered} de {total} paquetes" 263 + }, 264 + "skeleton": { 265 + "loading": "Cargando detalles del paquete", 266 + "license": "Licencia", 267 + "weekly": "Semanal", 268 + "size": "Tamaño", 269 + "deps": "Deps", 270 + "updated": "Actualizado", 271 + "install": "Instalar", 272 + "readme": "Léeme", 273 + "maintainers": "Mantenedores", 274 + "keywords": "Palabras clave", 275 + "versions": "Versiones", 276 + "dependencies": "Dependencias" 277 + }, 278 + "sort": { 279 + "downloads": "Más descargados", 280 + "updated": "Recientemente actualizado", 281 + "name_asc": "Nombre (A-Z)", 282 + "name_desc": "Nombre (Z-A)" 283 + } 284 + }, 285 + "connector": { 286 + "status": { 287 + "connecting": "conectando...", 288 + "connected_as": "conectado como {'@'}{user}", 289 + "connected": "conectado", 290 + "connect_cli": "conectar CLI local", 291 + "aria_connecting": "Conectando al conector local", 292 + "aria_connected": "Conectado al conector local", 293 + "aria_click_to_connect": "Clic para conectar al conector local", 294 + "avatar_alt": "Avatar de {user}" 295 + }, 296 + "modal": { 297 + "title": "Conector Local", 298 + "close_modal": "Cerrar modal", 299 + "connected": "Conectado", 300 + "logged_in_as": "Conectado como {'@'}{user}", 301 + "connected_hint": "Ahora puedes gestionar paquetes y organizaciones desde la interfaz web.", 302 + "disconnect": "Desconectar", 303 + "run_hint": "Ejecuta el conector en tu máquina para habilitar funciones de administración.", 304 + "copy_command": "Copiar comando", 305 + "copied": "Copiado", 306 + "paste_token": "Luego pega el token a continuación para conectar:", 307 + "token_label": "Token", 308 + "token_placeholder": "pegar token aquí...", 309 + "advanced": "Opciones avanzadas", 310 + "port_label": "Puerto", 311 + "warning": "ADVERTENCIA", 312 + "warning_text": "Esto permite a npmx acceder a tu CLI de npm. Solo conéctate a sitios de confianza.", 313 + "connect": "Conectar", 314 + "connecting": "Conectando..." 315 + } 316 + }, 317 + "operations": { 318 + "queue": { 319 + "title": "Cola de Operaciones", 320 + "clear_all": "limpiar todo", 321 + "refresh": "Actualizar operaciones", 322 + "empty": "No hay operaciones en cola", 323 + "empty_hint": "Agrega operaciones desde las páginas de paquetes u organizaciones", 324 + "active_label": "Operaciones activas", 325 + "otp_required": "OTP requerido", 326 + "otp_prompt": "Ingresa OTP para continuar", 327 + "otp_placeholder": "Ingresa código OTP...", 328 + "otp_label": "Contraseña de un solo uso", 329 + "retry_otp": "Reintentar con OTP", 330 + "retrying": "Reintentando...", 331 + "approve_operation": "Aprobar operación", 332 + "remove_operation": "Remover operación", 333 + "approve_all": "Aprobar Todas", 334 + "execute": "Ejecutar", 335 + "executing": "Ejecutando...", 336 + "log": "Registro", 337 + "log_label": "Registro de operaciones completadas", 338 + "remove_from_log": "Remover del registro" 339 + } 340 + }, 341 + "org": { 342 + "teams": { 343 + "title": "Equipos", 344 + "refresh": "Actualizar equipos", 345 + "filter_label": "Filtrar equipos", 346 + "filter_placeholder": "Filtrar equipos...", 347 + "sort_by": "Ordenar por", 348 + "loading": "Cargando equipos...", 349 + "no_teams": "No se encontraron equipos", 350 + "list_label": "Equipos de la organización", 351 + "delete_team": "Eliminar equipo {name}", 352 + "member_count": "{count} miembro | {count} miembros", 353 + "members_of": "Miembros de {team}", 354 + "no_members": "Sin miembros", 355 + "remove_user": "Remover a {user} del equipo", 356 + "username_to_add": "Nombre de usuario a agregar a {team}", 357 + "username_placeholder": "nombre de usuario...", 358 + "add_button": "agregar", 359 + "cancel_add_user": "Cancelar agregar usuario", 360 + "add_member": "+ Agregar miembro", 361 + "team_name_label": "Nombre del equipo", 362 + "team_name_placeholder": "nombre-del-equipo...", 363 + "create_button": "crear", 364 + "no_match": "Ningún equipo coincide con \"{query}\"", 365 + "cancel_create": "Cancelar crear equipo", 366 + "create_team": "+ Crear equipo" 367 + }, 368 + "members": { 369 + "title": "Miembros", 370 + "refresh": "Actualizar miembros", 371 + "filter_label": "Filtrar miembros", 372 + "filter_placeholder": "Filtrar miembros...", 373 + "filter_by_role": "Filtrar por rol", 374 + "filter_by_team": "Filtrar por equipo", 375 + "all_teams": "todos los equipos", 376 + "sort_by": "Ordenar por", 377 + "loading": "Cargando miembros...", 378 + "no_members": "No se encontraron miembros", 379 + "list_label": "Miembros de la organización", 380 + "change_role_for": "Cambiar rol de {name}", 381 + "remove_from_org": "Remover a {name} de la org", 382 + "view_team": "Ver equipo {team}", 383 + "no_match": "Ningún miembro coincide con tus filtros", 384 + "username_label": "Nombre de usuario", 385 + "username_placeholder": "nombre de usuario...", 386 + "role_label": "Rol", 387 + "role": { 388 + "all": "todos", 389 + "developer": "desarrollador", 390 + "admin": "administrador", 391 + "owner": "propietario" 392 + }, 393 + "team_label": "Equipo", 394 + "no_team": "sin equipo", 395 + "add_button": "agregar", 396 + "cancel_add": "Cancelar agregar miembro", 397 + "add_member": "+ Agregar miembro" 398 + }, 399 + "public_packages": "{count} paquete público | {count} paquetes públicos", 400 + "page": { 401 + "packages_title": "Paquetes", 402 + "members_tab": "Miembros", 403 + "teams_tab": "Equipos", 404 + "no_packages": "No se encontraron paquetes públicos para", 405 + "no_packages_hint": "Esta organización puede no existir o no tiene paquetes públicos.", 406 + "failed_to_load": "Error al cargar paquetes de la organización", 407 + "no_match": "Ningún paquete coincide con \"{query}\"", 408 + "not_found": "Organización no encontrada", 409 + "not_found_message": "La organización \"{'@'}{name}\" no existe en npm", 410 + "filter_placeholder": "Filtrar {count} paquetes..." 411 + } 412 + }, 413 + "user": { 414 + "combobox": { 415 + "add_to_org_hint": "(también agregará a la org)", 416 + "press_enter_to_add": "Presiona Enter para agregar {'@'}{username}", 417 + "default_placeholder": "nombre de usuario...", 418 + "suggestions_label": "Sugerencias de usuarios" 419 + }, 420 + "page": { 421 + "packages_title": "Paquetes", 422 + "no_packages": "No se encontraron paquetes públicos para", 423 + "no_packages_hint": "Este usuario puede no existir o no tiene paquetes públicos.", 424 + "failed_to_load": "Error al cargar paquetes del usuario", 425 + "no_match": "Ningún paquete coincide con \"{query}\"", 426 + "filter_placeholder": "Filtrar {count} paquetes..." 427 + }, 428 + "orgs_page": { 429 + "title": "Organizaciones", 430 + "back_to_profile": "Volver al perfil", 431 + "connect_required": "Conecta el CLI local para ver tus organizaciones.", 432 + "connect_hint_prefix": "Ejecuta", 433 + "connect_hint_suffix": "para comenzar.", 434 + "own_orgs_only": "Solo puedes ver tus propias organizaciones.", 435 + "view_your_orgs": "Ver tus organizaciones", 436 + "loading": "Cargando organizaciones...", 437 + "empty": "No se encontraron organizaciones.", 438 + "empty_hint": "Las organizaciones se detectan desde tus paquetes con alcance.", 439 + "count": "{count} Organización | {count} Organizaciones", 440 + "packages_count": "{count} paquete | {count} paquetes" 441 + } 442 + }, 443 + "claim": { 444 + "modal": { 445 + "title": "Reclamar Nombre de Paquete", 446 + "close_modal": "Cerrar modal", 447 + "success": "¡Paquete reclamado!", 448 + "success_detail": "{name}{'@'}0.0.0 ha sido publicado en npm.", 449 + "success_hint": "Ahora puedes publicar nuevas versiones de este paquete usando npm publish.", 450 + "view_package": "Ver Paquete", 451 + "invalid_name": "Nombre de paquete inválido:", 452 + "available": "¡Este nombre está disponible!", 453 + "taken": "Este nombre ya está tomado.", 454 + "similar_warning": "Existen paquetes similares - npm puede rechazar este nombre:", 455 + "related": "Paquetes relacionados:", 456 + "scope_warning_title": "Considera usar un paquete con alcance en su lugar", 457 + "scope_warning_text": "Los nombres de paquetes sin alcance son un recurso compartido. Solo reclama un nombre si tienes la intención de publicar y mantener un paquete. Para proyectos personales u organizacionales, usa un nombre con alcance como {'@'}{username}/{name}.", 458 + "connect_required": "Conéctate al conector local para reclamar este nombre de paquete.", 459 + "connect_button": "Conectar al Conector", 460 + "publish_hint": "Esto publicará un paquete de marcador de posición mínimo.", 461 + "preview_json": "Vista previa package.json", 462 + "claim_button": "Reclamar Nombre de Paquete", 463 + "publishing": "Publicando...", 464 + "checking": "Verificando disponibilidad...", 465 + "failed_to_check": "Error al verificar disponibilidad del nombre", 466 + "failed_to_claim": "Error al reclamar paquete" 467 + } 468 + }, 469 + "code": { 470 + "files_label": "Archivos", 471 + "no_files": "No hay archivos en este directorio", 472 + "select_version": "Seleccionar versión", 473 + "root": "raíz", 474 + "lines": "{count} líneas", 475 + "toggle_tree": "Alternar árbol de archivos", 476 + "close_tree": "Cerrar árbol de archivos", 477 + "copy_link": "Copiar enlace", 478 + "raw": "Sin procesar", 479 + "view_raw": "Ver archivo sin procesar", 480 + "file_too_large": "Archivo demasiado grande para vista previa", 481 + "file_size_warning": "{size} excede el límite de 500KB para resaltado de sintaxis", 482 + "load_anyway": "Cargar de todas formas", 483 + "failed_to_load": "Error al cargar archivo", 484 + "unavailable_hint": "El archivo puede ser demasiado grande o no estar disponible", 485 + "version_required": "Se requiere la versión para navegar el código", 486 + "go_to_package": "Ir al paquete", 487 + "loading_tree": "Cargando árbol de archivos...", 488 + "failed_to_load_tree": "Error al cargar archivos de esta versión del paquete", 489 + "back_to_package": "Volver al paquete", 490 + "table": { 491 + "name": "Nombre", 492 + "size": "Tamaño" 493 + } 494 + }, 495 + "badges": { 496 + "provenance": { 497 + "verified": "verificado", 498 + "verified_title": "Procedencia verificada", 499 + "verified_via": "Verificado: publicado vía {provider}" 500 + }, 501 + "jsr": { 502 + "title": "también disponible en JSR", 503 + "label": "jsr" 504 + } 505 + }, 506 + "about": { 507 + "title": "Acerca de", 508 + "heading": "acerca de", 509 + "meta_description": "npmx es un navegador rápido y moderno para el registro de npm. Una mejor UX/DX para explorar paquetes npm.", 510 + "back_home": "volver al inicio", 511 + "what_we_are": { 512 + "title": "Qué somos", 513 + "better_ux_dx": "mejor UX/DX", 514 + "admin_ui": "interfaz de administración", 515 + "description": "npmx es una {betterUxDx} para el registro de paquetes npm y herramientas. Proporcionamos una interfaz rápida y moderna para explorar paquetes, con características como modo oscuro, navegación por teclado, navegación de código y conexiones a registros alternativos como {jsr}.", 516 + "admin_description": "También aspiramos a proporcionar una mejor {adminUi} para gestionar tus paquetes, equipos y organizaciones — todo desde el navegador, impulsado por tu CLI de npm local." 517 + }, 518 + "what_we_are_not": { 519 + "title": "Qué no somos", 520 + "not_package_manager": "No somos un gestor de paquetes.", 521 + "not_registry": "No somos un registro.", 522 + "registry_description": "No alojamos paquetes. Solo somos una mejor forma de navegarlos.", 523 + "package_managers_exist": "{already} {people} {building} {really} {cool} {package} {managers}.", 524 + "words": { 525 + "already": "Ya hay", 526 + "people": "personas", 527 + "building": "construyendo", 528 + "really": "gestores de", 529 + "cool": "paquetes", 530 + "package": "realmente", 531 + "managers": "geniales" 532 + } 533 + }, 534 + "contributors": { 535 + "title": "Colaboradores", 536 + "description": "npmx es completamente de código abierto, construido por una increíble comunidad de colaboradores.", 537 + "loading": "Cargando colaboradores...", 538 + "error": "Error al cargar colaboradores", 539 + "view_profile": "Ver perfil de GitHub de {name}" 540 + }, 541 + "get_involved": { 542 + "title": "Involúcrate", 543 + "contribute": { 544 + "title": "Contribuir", 545 + "description": "Ayúdanos a construir una mejor experiencia npm.", 546 + "cta": "Ver en GitHub" 547 + }, 548 + "community": { 549 + "title": "Únete a la comunidad", 550 + "description": "Chatea, haz preguntas y comparte ideas.", 551 + "cta": "Únete a Discord" 552 + }, 553 + "follow": { 554 + "title": "Mantente actualizado", 555 + "description": "Descubre lo último sobre npmx.", 556 + "cta": "Seguir en Bluesky" 557 + } 558 + } 559 + }, 560 + "header": { 561 + "home": "inicio de npmx", 562 + "github": "GitHub", 563 + "packages": "paquetes", 564 + "packages_dropdown": { 565 + "title": "Tus Paquetes", 566 + "loading": "Cargando...", 567 + "error": "Error al cargar paquetes", 568 + "empty": "No se encontraron paquetes", 569 + "view_all": "Ver todos" 570 + }, 571 + "orgs": "organizaciones", 572 + "orgs_dropdown": { 573 + "title": "Tus Organizaciones", 574 + "loading": "Cargando...", 575 + "error": "Error al cargar organizaciones", 576 + "empty": "No se encontraron organizaciones", 577 + "view_all": "Ver todas" 578 + } 579 + } 580 + }
+580
lunaria/files/es-ES.json
··· 1 + { 2 + "seo": { 3 + "home": { 4 + "title": "npmx - Navegador de Paquetes para el Registro de npm", 5 + "description": "Un mejor navegador para el registro de npm. Busca, navega y explora paquetes con una interfaz moderna." 6 + } 7 + }, 8 + "tagline": "un mejor navegador para el registro de npm", 9 + "non_affiliation_disclaimer": "no afiliado con npm, Inc.", 10 + "trademark_disclaimer": "npm es una marca registrada de npm, Inc. Este sitio no está afiliado con npm, Inc.", 11 + "footer": { 12 + "about": "acerca de", 13 + "docs": "documentación", 14 + "source": "código fuente", 15 + "social": "redes sociales", 16 + "chat": "chat" 17 + }, 18 + "search": { 19 + "label": "Buscar paquetes npm", 20 + "placeholder": "buscar paquetes...", 21 + "button": "buscar", 22 + "clear": "Limpiar búsqueda", 23 + "searching": "Buscando...", 24 + "found_packages": "{count} paquetes encontrados", 25 + "updating": "(actualizando...)", 26 + "no_results": "No se encontraron paquetes para \"{query}\"", 27 + "not_taken": "{name} está disponible", 28 + "claim_prompt": "Reclamar este nombre de paquete en npm", 29 + "claim_button": "Reclamar \"{name}\"", 30 + "want_to_claim": "¿Quieres reclamar este nombre de paquete?", 31 + "start_typing": "Comienza a escribir para buscar paquetes", 32 + "exact_match": "exacto", 33 + "suggestion": { 34 + "user": "usuario", 35 + "org": "organización", 36 + "view_user_packages": "Ver paquetes de este usuario", 37 + "view_org_packages": "Ver paquetes de esta organización" 38 + } 39 + }, 40 + "nav": { 41 + "popular_packages": "Paquetes populares", 42 + "search": "buscar", 43 + "settings": "configuración", 44 + "back": "Atrás" 45 + }, 46 + "settings": { 47 + "relative_dates": "Fechas relativas", 48 + "include_types": "Incluir {'@'}types en la instalación", 49 + "theme": "Tema", 50 + "theme_light": "Claro", 51 + "theme_dark": "Oscuro", 52 + "theme_system": "Sistema", 53 + "language": "Idioma", 54 + "help_translate": "Ayuda a traducir npmx", 55 + "accent_colors": "Colores de acento" 56 + }, 57 + "common": { 58 + "loading": "Cargando...", 59 + "loading_more": "Cargando más...", 60 + "loading_packages": "Cargando paquetes...", 61 + "end_of_results": "Fin de los resultados", 62 + "try_again": "Intentar de nuevo", 63 + "close": "Cerrar", 64 + "retry": "Reintentar", 65 + "copy": "copiar", 66 + "copied": "¡copiado!", 67 + "show_more": "mostrar más", 68 + "warnings": "Advertencias:", 69 + "go_back_home": "Volver al inicio", 70 + "view_on_npm": "ver en npm", 71 + "per_week": "/ semana", 72 + "sort": { 73 + "name": "nombre", 74 + "role": "rol", 75 + "members": "miembros" 76 + }, 77 + "scroll_to_top": "Volver arriba" 78 + }, 79 + "package": { 80 + "not_found": "Paquete No Encontrado", 81 + "not_found_message": "No se pudo encontrar el paquete.", 82 + "no_description": "Sin descripción disponible", 83 + "show_full_description": "Mostrar descripción completa", 84 + "not_latest": "(no es la última)", 85 + "verified_provenance": "Procedencia verificada", 86 + "view_permalink": "Ver enlace permanente de esta versión", 87 + "deprecation": { 88 + "package": "Este paquete ha sido descontinuado.", 89 + "version": "Esta versión ha sido descontinuada.", 90 + "no_reason": "No se proporcionó ninguna razón" 91 + }, 92 + "stats": { 93 + "license": "Licencia", 94 + "weekly": "Semanal", 95 + "deps": "Deps", 96 + "install_size": "Tamaño de Instalación", 97 + "updated": "Actualizado", 98 + "view_download_trends": "Ver tendencias de descarga", 99 + "view_dependency_graph": "Ver gráfico de dependencias", 100 + "inspect_dependency_tree": "Inspeccionar árbol de dependencias" 101 + }, 102 + "links": { 103 + "repo": "repositorio", 104 + "homepage": "página principal", 105 + "issues": "issues", 106 + "forks": "fork | forks", 107 + "jsr": "jsr", 108 + "code": "código", 109 + "docs": "documentación", 110 + "fund": "financiar" 111 + }, 112 + "get_started": { 113 + "title": "Comenzar", 114 + "pm_label": "Gestor de paquetes", 115 + "copy_command": "Copiar comando de instalación", 116 + "view_types": "Ver {package}" 117 + }, 118 + "create": { 119 + "title": "Crear nuevo proyecto", 120 + "copy_command": "Copiar comando de creación" 121 + }, 122 + "run": { 123 + "title": "Ejecutar", 124 + "locally": "Ejecutar localmente" 125 + }, 126 + "readme": { 127 + "title": "Léeme", 128 + "no_readme": "No hay README disponible.", 129 + "view_on_github": "Ver en GitHub" 130 + }, 131 + "keywords_title": "Palabras clave", 132 + "compatibility": "Compatibilidad", 133 + "card": { 134 + "publisher": "Publicador", 135 + "updated": "Actualizado", 136 + "weekly_downloads": "Descargas semanales", 137 + "keywords": "Palabras clave", 138 + "license": "Licencia" 139 + }, 140 + "versions": { 141 + "title": "Versiones", 142 + "collapse": "Contraer {tag}", 143 + "expand": "Expandir {tag}", 144 + "collapse_other": "Contraer otras versiones", 145 + "expand_other": "Expandir otras versiones", 146 + "collapse_major": "Contraer mayor {major}", 147 + "expand_major": "Expandir mayor {major}", 148 + "other_versions": "Otras versiones", 149 + "more_tagged": "{count} más etiquetadas", 150 + "all_covered": "Todas las versiones están cubiertas por las etiquetas anteriores", 151 + "deprecated_title": "{version} (descontinuada)" 152 + }, 153 + "dependencies": { 154 + "title": "Dependencias ({count})", 155 + "list_label": "Dependencias del paquete", 156 + "show_all": "mostrar todas las {count} deps", 157 + "optional": "opcional" 158 + }, 159 + "peer_dependencies": { 160 + "title": "Dependencias Peer ({count})", 161 + "list_label": "Dependencias peer del paquete", 162 + "show_all": "mostrar todas las {count} deps peer" 163 + }, 164 + "optional_dependencies": { 165 + "title": "Dependencias Opcionales ({count})", 166 + "list_label": "Dependencias opcionales del paquete", 167 + "show_all": "mostrar todas las {count} deps opcionales" 168 + }, 169 + "maintainers": { 170 + "title": "Mantenedores", 171 + "list_label": "Mantenedores del paquete", 172 + "you": "(tú)", 173 + "via": "vía {teams}", 174 + "remove_owner": "Remover a {name} como propietario", 175 + "username_to_add": "Nombre de usuario a agregar como propietario", 176 + "username_placeholder": "nombre de usuario...", 177 + "add_button": "agregar", 178 + "cancel_add": "Cancelar agregar propietario", 179 + "add_owner": "+ Agregar propietario" 180 + }, 181 + "downloads": { 182 + "title": "Descargas Semanales", 183 + "date_range": "{start} a {end}", 184 + "analyze": "Analizar descargas", 185 + "modal_title": "Descargas", 186 + "granularity": "Granularidad", 187 + "granularity_daily": "Diaria", 188 + "granularity_weekly": "Semanal", 189 + "granularity_monthly": "Mensual", 190 + "granularity_yearly": "Anual", 191 + "start_date": "Inicio", 192 + "end_date": "Fin", 193 + "no_data": "No hay datos de descarga disponibles", 194 + "loading": "Cargando...", 195 + "y_axis_label": "Descargas {granularity}" 196 + }, 197 + "install_scripts": { 198 + "title": "Scripts de Instalación", 199 + "script_label": "(script)", 200 + "npx_packages": "{count} paquete npx | {count} paquetes npx", 201 + "currently": "actualmente {version}" 202 + }, 203 + "playgrounds": { 204 + "title": "Pruébalo", 205 + "choose": "elegir playground" 206 + }, 207 + "license": { 208 + "view_spdx": "Ver texto de licencia en SPDX" 209 + }, 210 + "vulnerabilities": { 211 + "no_description": "Sin descripción disponible", 212 + "found": "{count} vulnerabilidad encontrada | {count} vulnerabilidades encontradas", 213 + "deps_found": "{count} vulnerabilidad encontrada | {count} vulnerabilidades encontradas", 214 + "deps_affected": "{count} dependencia afectada | {count} dependencias afectadas", 215 + "tree_found": "{vulns} vulnerabilidad en {packages}/{total} paquetes | {vulns} vulnerabilidades en {packages}/{total} paquetes", 216 + "scanning_tree": "Escaneando árbol de dependencias...", 217 + "show_all_packages": "mostrar todos los {count} paquetes afectados", 218 + "no_summary": "Sin resumen", 219 + "view_details": "Ver detalles de vulnerabilidad", 220 + "path": "ruta", 221 + "more": "+{count} más", 222 + "packages_failed": "{count} paquete no pudo ser verificado | {count} paquetes no pudieron ser verificados", 223 + "no_known": "Sin vulnerabilidades conocidas en {count} paquetes", 224 + "scan_failed": "No se pudo escanear en busca de vulnerabilidades", 225 + "depth": { 226 + "root": "Este paquete", 227 + "direct": "Dependencia directa", 228 + "transitive": "Dependencia transitiva (indirecta)" 229 + }, 230 + "severity": { 231 + "critical": "crítica", 232 + "high": "alta", 233 + "moderate": "moderada", 234 + "low": "baja" 235 + } 236 + }, 237 + "access": { 238 + "title": "Acceso de Equipos", 239 + "refresh": "Actualizar acceso de equipos", 240 + "list_label": "Lista de acceso de equipos", 241 + "owner": "propietario", 242 + "rw": "lec/esc", 243 + "ro": "solo lec", 244 + "revoke_access": "Revocar acceso de {name}", 245 + "no_access": "Sin acceso de equipos configurado", 246 + "select_team_label": "Seleccionar equipo", 247 + "loading_teams": "Cargando equipos...", 248 + "select_team": "Seleccionar equipo", 249 + "permission_label": "Nivel de permiso", 250 + "permission": { 251 + "read_only": "solo lectura", 252 + "read_write": "lectura-escritura" 253 + }, 254 + "grant_button": "otorgar", 255 + "cancel_grant": "Cancelar otorgar acceso", 256 + "grant_access": "+ Otorgar acceso de equipo" 257 + }, 258 + "list": { 259 + "filter_label": "Filtrar paquetes", 260 + "filter_placeholder": "Filtrar paquetes...", 261 + "sort_label": "Ordenar paquetes", 262 + "showing_count": "Mostrando {filtered} de {total} paquetes" 263 + }, 264 + "skeleton": { 265 + "loading": "Cargando detalles del paquete", 266 + "license": "Licencia", 267 + "weekly": "Semanal", 268 + "size": "Tamaño", 269 + "deps": "Deps", 270 + "updated": "Actualizado", 271 + "install": "Instalar", 272 + "readme": "Léeme", 273 + "maintainers": "Mantenedores", 274 + "keywords": "Palabras clave", 275 + "versions": "Versiones", 276 + "dependencies": "Dependencias" 277 + }, 278 + "sort": { 279 + "downloads": "Más descargados", 280 + "updated": "Recientemente actualizado", 281 + "name_asc": "Nombre (A-Z)", 282 + "name_desc": "Nombre (Z-A)" 283 + } 284 + }, 285 + "connector": { 286 + "status": { 287 + "connecting": "conectando...", 288 + "connected_as": "conectado como {'@'}{user}", 289 + "connected": "conectado", 290 + "connect_cli": "conectar CLI local", 291 + "aria_connecting": "Conectando al conector local", 292 + "aria_connected": "Conectado al conector local", 293 + "aria_click_to_connect": "Clic para conectar al conector local", 294 + "avatar_alt": "Avatar de {user}" 295 + }, 296 + "modal": { 297 + "title": "Conector Local", 298 + "close_modal": "Cerrar modal", 299 + "connected": "Conectado", 300 + "logged_in_as": "Conectado como {'@'}{user}", 301 + "connected_hint": "Ahora puedes gestionar paquetes y organizaciones desde la interfaz web.", 302 + "disconnect": "Desconectar", 303 + "run_hint": "Ejecuta el conector en tu máquina para habilitar funciones de administración.", 304 + "copy_command": "Copiar comando", 305 + "copied": "Copiado", 306 + "paste_token": "Luego pega el token a continuación para conectar:", 307 + "token_label": "Token", 308 + "token_placeholder": "pegar token aquí...", 309 + "advanced": "Opciones avanzadas", 310 + "port_label": "Puerto", 311 + "warning": "ADVERTENCIA", 312 + "warning_text": "Esto permite a npmx acceder a tu CLI de npm. Solo conéctate a sitios de confianza.", 313 + "connect": "Conectar", 314 + "connecting": "Conectando..." 315 + } 316 + }, 317 + "operations": { 318 + "queue": { 319 + "title": "Cola de Operaciones", 320 + "clear_all": "limpiar todo", 321 + "refresh": "Actualizar operaciones", 322 + "empty": "No hay operaciones en cola", 323 + "empty_hint": "Agrega operaciones desde las páginas de paquetes u organizaciones", 324 + "active_label": "Operaciones activas", 325 + "otp_required": "OTP requerido", 326 + "otp_prompt": "Ingresa OTP para continuar", 327 + "otp_placeholder": "Ingresa código OTP...", 328 + "otp_label": "Contraseña de un solo uso", 329 + "retry_otp": "Reintentar con OTP", 330 + "retrying": "Reintentando...", 331 + "approve_operation": "Aprobar operación", 332 + "remove_operation": "Remover operación", 333 + "approve_all": "Aprobar Todas", 334 + "execute": "Ejecutar", 335 + "executing": "Ejecutando...", 336 + "log": "Registro", 337 + "log_label": "Registro de operaciones completadas", 338 + "remove_from_log": "Remover del registro" 339 + } 340 + }, 341 + "org": { 342 + "teams": { 343 + "title": "Equipos", 344 + "refresh": "Actualizar equipos", 345 + "filter_label": "Filtrar equipos", 346 + "filter_placeholder": "Filtrar equipos...", 347 + "sort_by": "Ordenar por", 348 + "loading": "Cargando equipos...", 349 + "no_teams": "No se encontraron equipos", 350 + "list_label": "Equipos de la organización", 351 + "delete_team": "Eliminar equipo {name}", 352 + "member_count": "{count} miembro | {count} miembros", 353 + "members_of": "Miembros de {team}", 354 + "no_members": "Sin miembros", 355 + "remove_user": "Remover a {user} del equipo", 356 + "username_to_add": "Nombre de usuario a agregar a {team}", 357 + "username_placeholder": "nombre de usuario...", 358 + "add_button": "agregar", 359 + "cancel_add_user": "Cancelar agregar usuario", 360 + "add_member": "+ Agregar miembro", 361 + "team_name_label": "Nombre del equipo", 362 + "team_name_placeholder": "nombre-del-equipo...", 363 + "create_button": "crear", 364 + "no_match": "Ningún equipo coincide con \"{query}\"", 365 + "cancel_create": "Cancelar crear equipo", 366 + "create_team": "+ Crear equipo" 367 + }, 368 + "members": { 369 + "title": "Miembros", 370 + "refresh": "Actualizar miembros", 371 + "filter_label": "Filtrar miembros", 372 + "filter_placeholder": "Filtrar miembros...", 373 + "filter_by_role": "Filtrar por rol", 374 + "filter_by_team": "Filtrar por equipo", 375 + "all_teams": "todos los equipos", 376 + "sort_by": "Ordenar por", 377 + "loading": "Cargando miembros...", 378 + "no_members": "No se encontraron miembros", 379 + "list_label": "Miembros de la organización", 380 + "change_role_for": "Cambiar rol de {name}", 381 + "remove_from_org": "Remover a {name} de la org", 382 + "view_team": "Ver equipo {team}", 383 + "no_match": "Ningún miembro coincide con tus filtros", 384 + "username_label": "Nombre de usuario", 385 + "username_placeholder": "nombre de usuario...", 386 + "role_label": "Rol", 387 + "role": { 388 + "all": "todos", 389 + "developer": "desarrollador", 390 + "admin": "administrador", 391 + "owner": "propietario" 392 + }, 393 + "team_label": "Equipo", 394 + "no_team": "sin equipo", 395 + "add_button": "agregar", 396 + "cancel_add": "Cancelar agregar miembro", 397 + "add_member": "+ Agregar miembro" 398 + }, 399 + "public_packages": "{count} paquete público | {count} paquetes públicos", 400 + "page": { 401 + "packages_title": "Paquetes", 402 + "members_tab": "Miembros", 403 + "teams_tab": "Equipos", 404 + "no_packages": "No se encontraron paquetes públicos para", 405 + "no_packages_hint": "Esta organización puede no existir o no tiene paquetes públicos.", 406 + "failed_to_load": "Error al cargar paquetes de la organización", 407 + "no_match": "Ningún paquete coincide con \"{query}\"", 408 + "not_found": "Organización no encontrada", 409 + "not_found_message": "La organización \"{'@'}{name}\" no existe en npm", 410 + "filter_placeholder": "Filtrar {count} paquetes..." 411 + } 412 + }, 413 + "user": { 414 + "combobox": { 415 + "add_to_org_hint": "(también agregará a la org)", 416 + "press_enter_to_add": "Presiona Enter para agregar {'@'}{username}", 417 + "default_placeholder": "nombre de usuario...", 418 + "suggestions_label": "Sugerencias de usuarios" 419 + }, 420 + "page": { 421 + "packages_title": "Paquetes", 422 + "no_packages": "No se encontraron paquetes públicos para", 423 + "no_packages_hint": "Este usuario puede no existir o no tiene paquetes públicos.", 424 + "failed_to_load": "Error al cargar paquetes del usuario", 425 + "no_match": "Ningún paquete coincide con \"{query}\"", 426 + "filter_placeholder": "Filtrar {count} paquetes..." 427 + }, 428 + "orgs_page": { 429 + "title": "Organizaciones", 430 + "back_to_profile": "Volver al perfil", 431 + "connect_required": "Conecta el CLI local para ver tus organizaciones.", 432 + "connect_hint_prefix": "Ejecuta", 433 + "connect_hint_suffix": "para comenzar.", 434 + "own_orgs_only": "Solo puedes ver tus propias organizaciones.", 435 + "view_your_orgs": "Ver tus organizaciones", 436 + "loading": "Cargando organizaciones...", 437 + "empty": "No se encontraron organizaciones.", 438 + "empty_hint": "Las organizaciones se detectan desde tus paquetes con alcance.", 439 + "count": "{count} Organización | {count} Organizaciones", 440 + "packages_count": "{count} paquete | {count} paquetes" 441 + } 442 + }, 443 + "claim": { 444 + "modal": { 445 + "title": "Reclamar Nombre de Paquete", 446 + "close_modal": "Cerrar modal", 447 + "success": "¡Paquete reclamado!", 448 + "success_detail": "{name}{'@'}0.0.0 ha sido publicado en npm.", 449 + "success_hint": "Ahora puedes publicar nuevas versiones de este paquete usando npm publish.", 450 + "view_package": "Ver Paquete", 451 + "invalid_name": "Nombre de paquete inválido:", 452 + "available": "¡Este nombre está disponible!", 453 + "taken": "Este nombre ya está tomado.", 454 + "similar_warning": "Existen paquetes similares - npm puede rechazar este nombre:", 455 + "related": "Paquetes relacionados:", 456 + "scope_warning_title": "Considera usar un paquete con alcance en su lugar", 457 + "scope_warning_text": "Los nombres de paquetes sin alcance son un recurso compartido. Solo reclama un nombre si tienes la intención de publicar y mantener un paquete. Para proyectos personales u organizacionales, usa un nombre con alcance como {'@'}{username}/{name}.", 458 + "connect_required": "Conéctate al conector local para reclamar este nombre de paquete.", 459 + "connect_button": "Conectar al Conector", 460 + "publish_hint": "Esto publicará un paquete de marcador de posición mínimo.", 461 + "preview_json": "Vista previa package.json", 462 + "claim_button": "Reclamar Nombre de Paquete", 463 + "publishing": "Publicando...", 464 + "checking": "Verificando disponibilidad...", 465 + "failed_to_check": "Error al verificar disponibilidad del nombre", 466 + "failed_to_claim": "Error al reclamar paquete" 467 + } 468 + }, 469 + "code": { 470 + "files_label": "Archivos", 471 + "no_files": "No hay archivos en este directorio", 472 + "select_version": "Seleccionar versión", 473 + "root": "raíz", 474 + "lines": "{count} líneas", 475 + "toggle_tree": "Alternar árbol de archivos", 476 + "close_tree": "Cerrar árbol de archivos", 477 + "copy_link": "Copiar enlace", 478 + "raw": "Sin procesar", 479 + "view_raw": "Ver archivo sin procesar", 480 + "file_too_large": "Archivo demasiado grande para vista previa", 481 + "file_size_warning": "{size} excede el límite de 500KB para resaltado de sintaxis", 482 + "load_anyway": "Cargar de todas formas", 483 + "failed_to_load": "Error al cargar archivo", 484 + "unavailable_hint": "El archivo puede ser demasiado grande o no estar disponible", 485 + "version_required": "Se requiere la versión para navegar el código", 486 + "go_to_package": "Ir al paquete", 487 + "loading_tree": "Cargando árbol de archivos...", 488 + "failed_to_load_tree": "Error al cargar archivos de esta versión del paquete", 489 + "back_to_package": "Volver al paquete", 490 + "table": { 491 + "name": "Nombre", 492 + "size": "Tamaño" 493 + } 494 + }, 495 + "badges": { 496 + "provenance": { 497 + "verified": "verificado", 498 + "verified_title": "Procedencia verificada", 499 + "verified_via": "Verificado: publicado vía {provider}" 500 + }, 501 + "jsr": { 502 + "title": "también disponible en JSR", 503 + "label": "jsr" 504 + } 505 + }, 506 + "about": { 507 + "title": "Acerca de", 508 + "heading": "acerca de", 509 + "meta_description": "npmx es un navegador rápido y moderno para el registro de npm. Una mejor UX/DX para explorar paquetes npm.", 510 + "back_home": "volver al inicio", 511 + "what_we_are": { 512 + "title": "Qué somos", 513 + "better_ux_dx": "mejor UX/DX", 514 + "admin_ui": "interfaz de administración", 515 + "description": "npmx es una {betterUxDx} para el registro de paquetes npm y herramientas. Proporcionamos una interfaz rápida y moderna para explorar paquetes, con características como modo oscuro, navegación por teclado, navegación de código y conexiones a registros alternativos como {jsr}.", 516 + "admin_description": "También aspiramos a proporcionar una mejor {adminUi} para gestionar tus paquetes, equipos y organizaciones — todo desde el navegador, impulsado por tu CLI de npm local." 517 + }, 518 + "what_we_are_not": { 519 + "title": "Qué no somos", 520 + "not_package_manager": "No somos un gestor de paquetes.", 521 + "not_registry": "No somos un registro.", 522 + "registry_description": "No alojamos paquetes. Solo somos una mejor forma de navegarlos.", 523 + "package_managers_exist": "{already} {people} {building} {really} {cool} {package} {managers}.", 524 + "words": { 525 + "already": "Ya hay", 526 + "people": "personas", 527 + "building": "construyendo", 528 + "really": "gestores de", 529 + "cool": "paquetes", 530 + "package": "realmente", 531 + "managers": "geniales" 532 + } 533 + }, 534 + "contributors": { 535 + "title": "Colaboradores", 536 + "description": "npmx es completamente de código abierto, construido por una increíble comunidad de colaboradores.", 537 + "loading": "Cargando colaboradores...", 538 + "error": "Error al cargar colaboradores", 539 + "view_profile": "Ver perfil de GitHub de {name}" 540 + }, 541 + "get_involved": { 542 + "title": "Involúcrate", 543 + "contribute": { 544 + "title": "Contribuir", 545 + "description": "Ayúdanos a construir una mejor experiencia npm.", 546 + "cta": "Ver en GitHub" 547 + }, 548 + "community": { 549 + "title": "Únete a la comunidad", 550 + "description": "Chatea, haz preguntas y comparte ideas.", 551 + "cta": "Únete a Discord" 552 + }, 553 + "follow": { 554 + "title": "Mantente actualizado", 555 + "description": "Descubre lo último sobre npmx.", 556 + "cta": "Seguir en Bluesky" 557 + } 558 + } 559 + }, 560 + "header": { 561 + "home": "inicio de npmx", 562 + "github": "GitHub", 563 + "packages": "paquetes", 564 + "packages_dropdown": { 565 + "title": "Tus Paquetes", 566 + "loading": "Cargando...", 567 + "error": "Error al cargar paquetes", 568 + "empty": "No se encontraron paquetes", 569 + "view_all": "Ver todos" 570 + }, 571 + "orgs": "organizaciones", 572 + "orgs_dropdown": { 573 + "title": "Tus Organizaciones", 574 + "loading": "Cargando...", 575 + "error": "Error al cargar organizaciones", 576 + "empty": "No se encontraron organizaciones", 577 + "view_all": "Ver todas" 578 + } 579 + } 580 + }
+545
lunaria/files/fr-FR.json
··· 1 + { 2 + "seo": { 3 + "home": { 4 + "title": "npmx - Explorateur de paquets pour le registre npm", 5 + "description": "Un meilleur explorateur du registre npm. Recherchez, parcourez et explorez les paquets avec une interface moderne." 6 + } 7 + }, 8 + "tagline": "un meilleur explorateur du registre npm", 9 + "non_affiliation_disclaimer": "non affilié à npm, Inc.", 10 + "trademark_disclaimer": "npm est une marque déposée de npm, Inc. Ce site n'est pas affilié à npm, Inc.", 11 + "footer": { 12 + "about": "à propos", 13 + "docs": "docs", 14 + "source": "source", 15 + "social": "réseaux sociaux", 16 + "chat": "espace de discussion" 17 + }, 18 + "search": { 19 + "label": "Rechercher des paquets npm", 20 + "placeholder": "rechercher des paquets...", 21 + "button": "rechercher", 22 + "clear": "Effacer la recherche", 23 + "searching": "Recherche en cours...", 24 + "found_packages": "{count} paquets trouvés", 25 + "updating": "(mise à jour...)", 26 + "no_results": "Aucun paquet trouvé pour « {query} »", 27 + "not_taken": "{name} n'est pas pris", 28 + "claim_prompt": "Réserver ce nom de paquet sur npm", 29 + "claim_button": "Réserver « {name} »", 30 + "want_to_claim": "Vous souhaitez réserver ce nom de paquet ?", 31 + "start_typing": "Commencez à taper pour rechercher des paquets", 32 + "exact_match": "exact", 33 + "suggestion": { 34 + "user": "utilisateur", 35 + "org": "organisation", 36 + "view_user_packages": "Voir les paquets de cet utilisateur", 37 + "view_org_packages": "Voir les paquets de cette organisation" 38 + } 39 + }, 40 + "nav": { 41 + "popular_packages": "Paquets populaires", 42 + "search": "recherche", 43 + "settings": "paramètres", 44 + "back": "Retour" 45 + }, 46 + "settings": { 47 + "relative_dates": "Dates relatives", 48 + "include_types": "Inclure {'@'}types à la commande d'installation", 49 + "theme": "Thème", 50 + "theme_light": "Clair", 51 + "theme_dark": "Sombre", 52 + "theme_system": "Système", 53 + "language": "Langue de l'interface", 54 + "help_translate": "Aidez à traduire npmx" 55 + }, 56 + "common": { 57 + "loading": "Chargement...", 58 + "loading_more": "Chargement en cours...", 59 + "loading_packages": "Chargement des paquets...", 60 + "end_of_results": "Fin des résultats", 61 + "try_again": "Réessayer encore", 62 + "close": "Fermer", 63 + "retry": "Réessayer", 64 + "copy": "copier", 65 + "copied": "copié !", 66 + "show_more": "afficher plus", 67 + "warnings": "Avertissements :", 68 + "go_back_home": "Retour à l'accueil", 69 + "view_on_npm": "voir sur npm", 70 + "per_week": "/ semaine", 71 + "sort": { 72 + "name": "nom", 73 + "role": "rôle", 74 + "members": "membres" 75 + }, 76 + "scroll_to_top": "Retour en haut" 77 + }, 78 + "package": { 79 + "not_found": "Paquet introuvable", 80 + "not_found_message": "Le paquet n'a pas pu être trouvé.", 81 + "no_description": "Aucune description fournie", 82 + "show_full_description": "Afficher la description complète", 83 + "not_latest": "(pas la dernière)", 84 + "verified_provenance": "Provenance vérifiée", 85 + "view_permalink": "Voir le lien permanent pour cette version", 86 + "deprecation": { 87 + "package": "Ce paquet a été déprécié.", 88 + "version": "Cette version a été dépréciée.", 89 + "no_reason": "Aucune raison fournie" 90 + }, 91 + "stats": { 92 + "license": "Licence", 93 + "weekly": "Hebdo", 94 + "deps": "Dépendances", 95 + "install_size": "Taille d'installation", 96 + "updated": "Mis à jour", 97 + "view_download_trends": "Voir les tendances de téléchargement", 98 + "view_dependency_graph": "Voir le graphe de dépendances", 99 + "inspect_dependency_tree": "Inspecter l'arbre de dépendances" 100 + }, 101 + "links": { 102 + "repo": "dépôt", 103 + "homepage": "site web", 104 + "issues": "issues", 105 + "forks": "fork | forks", 106 + "jsr": "jsr", 107 + "code": "code", 108 + "docs": "docs" 109 + }, 110 + "get_started": { 111 + "title": "Commencer", 112 + "pm_label": "Gestionnaire de paquets", 113 + "copy_command": "Copier la commande d'installation", 114 + "view_types": "Voir {package}" 115 + }, 116 + "readme": { 117 + "title": "Readme", 118 + "no_readme": "Aucun README disponible.", 119 + "view_on_github": "Voir sur GitHub" 120 + }, 121 + "keywords_title": "Mots-clés", 122 + "compatibility": "Compatibilité", 123 + "card": { 124 + "publisher": "Éditeur", 125 + "updated": "Mis à jour", 126 + "weekly_downloads": "Téléchargements hebdomadaires", 127 + "keywords": "Mots-clés", 128 + "license": "Licence" 129 + }, 130 + "versions": { 131 + "title": "Versions", 132 + "collapse": "Réduire {tag}", 133 + "expand": "Développer {tag}", 134 + "collapse_other": "Réduire les autres versions", 135 + "expand_other": "Développer les autres versions", 136 + "collapse_major": "Réduire la majeure {major}", 137 + "expand_major": "Développer la majeure {major}", 138 + "other_versions": "Autres versions", 139 + "more_tagged": "{count} de plus avec tag", 140 + "all_covered": "Toutes les versions sont couvertes par les tags ci-dessus", 141 + "deprecated_title": "{version} (dépréciée)" 142 + }, 143 + "dependencies": { 144 + "title": "Dépendances ({count})", 145 + "list_label": "Dépendances du paquet", 146 + "show_all": "afficher les {count} dépendances", 147 + "optional": "optionnelle" 148 + }, 149 + "peer_dependencies": { 150 + "title": "Dépendances peer ({count})", 151 + "list_label": "Dépendances peer du paquet", 152 + "show_all": "afficher les {count} dépendances peer" 153 + }, 154 + "optional_dependencies": { 155 + "title": "Dépendances optionnelles ({count})", 156 + "list_label": "Dépendances optionnelles du paquet", 157 + "show_all": "afficher les {count} dépendances optionnelles" 158 + }, 159 + "maintainers": { 160 + "title": "Mainteneurs", 161 + "list_label": "Mainteneurs du paquet", 162 + "you": "(vous)", 163 + "via": "via {teams}", 164 + "remove_owner": "Retirer {name} en tant que propriétaire", 165 + "username_to_add": "Nom d'utilisateur à ajouter comme propriétaire", 166 + "username_placeholder": "nom d'utilisateur...", 167 + "add_button": "ajouter", 168 + "cancel_add": "Annuler l'ajout de propriétaire", 169 + "add_owner": "+ Ajouter un propriétaire" 170 + }, 171 + "downloads": { 172 + "title": "Téléchargements hebdomadaires", 173 + "date_range": "{start} au {end}", 174 + "analyze": "Analyser les téléchargements", 175 + "modal_title": "Téléchargements", 176 + "granularity": "Granularité", 177 + "granularity_daily": "Quotidien", 178 + "granularity_weekly": "Hebdomadaire", 179 + "granularity_monthly": "Mensuel", 180 + "granularity_yearly": "Annuel", 181 + "start_date": "Début", 182 + "end_date": "Fin", 183 + "no_data": "Aucune donnée de téléchargement disponible", 184 + "loading": "Chargement...", 185 + "y_axis_label": "Téléchargements {granularity}" 186 + }, 187 + "install_scripts": { 188 + "title": "Scripts d'installation", 189 + "script_label": "(script)", 190 + "npx_packages": "{count} paquet npx | {count} paquets npx", 191 + "currently": "actuellement {version}" 192 + }, 193 + "playgrounds": { 194 + "title": "Essayer", 195 + "choose": "choisir un playground" 196 + }, 197 + "license": { 198 + "view_spdx": "Voir le texte de la licence sur SPDX" 199 + }, 200 + "vulnerabilities": { 201 + "no_description": "Aucune description disponible", 202 + "found": "{count} vulnérabilité trouvée | {count} vulnérabilités trouvées", 203 + "deps_found": "{count} vulnérabilité trouvée | {count} vulnérabilités trouvées", 204 + "deps_affected": "{count} dépendance affectée | {count} dépendances affectées", 205 + "tree_found": "{vulns} vulnérabilité dans {packages}/{total} paquets | {vulns} vulnérabilités dans {packages}/{total} paquets", 206 + "scanning_tree": "Analyse de l'arbre des dépendances...", 207 + "show_all_packages": "afficher les {count} paquets affectés", 208 + "no_summary": "Aucun résumé", 209 + "view_details": "Voir les détails de la vulnérabilité", 210 + "path": "chemin", 211 + "more": "+{count} de plus", 212 + "packages_failed": "{count} paquet n'a pas pu être vérifié | {count} paquets n'ont pas pu être vérifiés", 213 + "no_known": "Aucune vulnérabilité connue dans {count} paquets", 214 + "scan_failed": "Impossible d'analyser les vulnérabilités", 215 + "depth": { 216 + "root": "Ce paquet", 217 + "direct": "Dépendance directe", 218 + "transitive": "Dépendance transitive (indirecte)" 219 + }, 220 + "severity": { 221 + "critical": "critique", 222 + "high": "élevée", 223 + "moderate": "modérée", 224 + "low": "faible" 225 + } 226 + }, 227 + "access": { 228 + "title": "Accès des équipes", 229 + "refresh": "Actualiser l'accès des équipes", 230 + "list_label": "Liste d'accès des équipes", 231 + "owner": "propriétaire", 232 + "rw": "lecture/écriture", 233 + "ro": "lecture seule", 234 + "revoke_access": "Révoquer l'accès de {name}", 235 + "no_access": "Aucun accès d'équipe configuré", 236 + "select_team_label": "Sélectionner une équipe", 237 + "loading_teams": "Chargement des équipes...", 238 + "select_team": "Sélectionner une équipe", 239 + "permission_label": "Niveau de permission", 240 + "permission": { 241 + "read_only": "lecture seule", 242 + "read_write": "lecture-écriture" 243 + }, 244 + "grant_button": "accorder", 245 + "cancel_grant": "Annuler l'octroi d'accès", 246 + "grant_access": "+ Accorder l'accès à une équipe" 247 + }, 248 + "list": { 249 + "filter_label": "Filtrer les paquets", 250 + "filter_placeholder": "Filtrer les paquets...", 251 + "sort_label": "Trier les paquets", 252 + "showing_count": "Affichage de {filtered} sur {total} paquets" 253 + }, 254 + "skeleton": { 255 + "loading": "Chargement des détails du paquet", 256 + "license": "Licence", 257 + "weekly": "Hebdo", 258 + "size": "Taille", 259 + "deps": "Dépendances", 260 + "updated": "Mis à jour", 261 + "install": "Installer", 262 + "readme": "Readme", 263 + "maintainers": "Mainteneurs", 264 + "keywords": "Mots-clés", 265 + "versions": "Versions", 266 + "dependencies": "Dépendances" 267 + }, 268 + "sort": { 269 + "downloads": "Plus téléchargés", 270 + "updated": "Récemment mis à jour", 271 + "name_asc": "Nom (A-Z)", 272 + "name_desc": "Nom (Z-A)" 273 + } 274 + }, 275 + "connector": { 276 + "status": { 277 + "connecting": "connexion...", 278 + "connected_as": "connecté·e en tant que {'@'}{user}", 279 + "connected": "connecté·e", 280 + "connect_cli": "connecter le CLI local", 281 + "aria_connecting": "Connexion au connecteur local", 282 + "aria_connected": "Connecté au connecteur local", 283 + "aria_click_to_connect": "Cliquer pour se connecter au connecteur local", 284 + "avatar_alt": "Avatar de {user}" 285 + }, 286 + "modal": { 287 + "title": "Connecteur local", 288 + "close_modal": "Fermer la fenêtre", 289 + "connected": "Connecté·e", 290 + "logged_in_as": "Connecté·e en tant que {'@'}{user}", 291 + "connected_hint": "Vous pouvez maintenant gérer les paquets et les organisations depuis l'interface web.", 292 + "disconnect": "Se déconnecter", 293 + "run_hint": "Exécutez le connecteur sur votre machine pour activer les fonctionnalités d'administration.", 294 + "copy_command": "Copier la commande", 295 + "copied": "Copié", 296 + "paste_token": "Puis collez le jeton ci-dessous pour vous connecter :", 297 + "token_label": "Jeton", 298 + "token_placeholder": "collez le jeton ici...", 299 + "advanced": "Options avancées", 300 + "port_label": "Port", 301 + "warning": "ATTENTION", 302 + "warning_text": "Cela permet à npmx d'accéder à votre CLI npm. Ne vous connectez qu'aux sites de confiance.", 303 + "connect": "Connecter", 304 + "connecting": "Connexion..." 305 + } 306 + }, 307 + "operations": { 308 + "queue": { 309 + "title": "File d'attente", 310 + "clear_all": "tout effacer", 311 + "refresh": "Actualiser les opérations", 312 + "empty": "Aucune action en file d'attente", 313 + "empty_hint": "Ajoutez des actions depuis les pages de paquets ou d'organisations", 314 + "active_label": "Actions actives", 315 + "otp_required": "OTP requis", 316 + "otp_prompt": "Entrez l'OTP pour continuer", 317 + "otp_placeholder": "Entrez le code OTP...", 318 + "otp_label": "Mot de passe à usage unique", 319 + "retry_otp": "Réessayer avec l'OTP", 320 + "retrying": "Nouvelle tentative...", 321 + "approve_operation": "Approuver l'opération", 322 + "remove_operation": "Supprimer l'opération", 323 + "approve_all": "Tout approuver", 324 + "execute": "Exécuter", 325 + "executing": "Exécution...", 326 + "log": "Journal", 327 + "log_label": "Journal des opérations terminées", 328 + "remove_from_log": "Supprimer du journal" 329 + } 330 + }, 331 + "org": { 332 + "teams": { 333 + "title": "Équipes", 334 + "refresh": "Actualiser les équipes", 335 + "filter_label": "Filtrer les équipes", 336 + "filter_placeholder": "Filtrer les équipes...", 337 + "sort_by": "Trier par", 338 + "loading": "Chargement des équipes...", 339 + "no_teams": "Aucune équipe trouvée", 340 + "list_label": "Équipes de l'organisation", 341 + "delete_team": "Supprimer l'équipe {name}", 342 + "member_count": "{count} membre | {count} membres", 343 + "members_of": "Membres de {team}", 344 + "no_members": "Aucun membre", 345 + "remove_user": "Retirer {user} de l'équipe", 346 + "username_to_add": "Nom d'utilisateur à ajouter à {team}", 347 + "username_placeholder": "nom d'utilisateur...", 348 + "add_button": "ajouter", 349 + "cancel_add_user": "Annuler l'ajout d'utilisateur", 350 + "add_member": "+ Ajouter un membre", 351 + "team_name_label": "Nom de l'équipe", 352 + "team_name_placeholder": "nom-de-l-equipe...", 353 + "create_button": "créer", 354 + "no_match": "Aucune équipe ne correspond à « {query} »", 355 + "cancel_create": "Annuler la création d'équipe", 356 + "create_team": "+ Créer une équipe" 357 + }, 358 + "members": { 359 + "title": "Membres", 360 + "refresh": "Actualiser les membres", 361 + "filter_label": "Filtrer les membres", 362 + "filter_placeholder": "Filtrer les membres...", 363 + "filter_by_role": "Filtrer par rôle", 364 + "filter_by_team": "Filtrer par équipe", 365 + "all_teams": "toutes les équipes", 366 + "sort_by": "Trier par", 367 + "loading": "Chargement des membres...", 368 + "no_members": "Aucun membre trouvé", 369 + "list_label": "Membres de l'organisation", 370 + "change_role_for": "Changer le rôle de {name}", 371 + "remove_from_org": "Retirer {name} de l'organisation", 372 + "view_team": "Voir l'équipe {team}", 373 + "no_match": "Aucun membre ne correspond à vos filtres", 374 + "username_label": "Nom d'utilisateur", 375 + "username_placeholder": "nom d'utilisateur...", 376 + "role_label": "Rôle", 377 + "role": { 378 + "all": "tous", 379 + "developer": "développeur", 380 + "admin": "admin", 381 + "owner": "propriétaire" 382 + }, 383 + "team_label": "Équipe", 384 + "no_team": "aucune équipe", 385 + "add_button": "ajouter", 386 + "cancel_add": "Annuler l'ajout de membre", 387 + "add_member": "+ Ajouter un membre" 388 + }, 389 + "public_packages": "{count} paquet public | {count} paquets publics", 390 + "page": { 391 + "packages_title": "Paquets", 392 + "members_tab": "Membres", 393 + "teams_tab": "Équipes", 394 + "no_packages": "Aucun paquet public trouvé pour", 395 + "no_packages_hint": "Cette organisation n'existe peut-être pas ou n'a aucun paquet public.", 396 + "failed_to_load": "Échec du chargement des paquets de l'organisation", 397 + "no_match": "Aucun paquet ne correspond à « {query} »", 398 + "not_found": "Organisation introuvable", 399 + "not_found_message": "L'organisation « {'@'}{name} » n'existe pas sur npm", 400 + "filter_placeholder": "Filtrer {count} paquets..." 401 + } 402 + }, 403 + "user": { 404 + "combobox": { 405 + "add_to_org_hint": "(sera aussi ajouté à l'organisation)", 406 + "press_enter_to_add": "Appuyez sur Entrée pour ajouter {'@'}{username}", 407 + "default_placeholder": "nom d'utilisateur...", 408 + "suggestions_label": "Suggestions d'utilisateurs" 409 + }, 410 + "page": { 411 + "packages_title": "Paquets", 412 + "no_packages": "Aucun paquet public trouvé pour", 413 + "no_packages_hint": "Cet utilisateur n'existe peut-être pas ou n'a aucun paquet public.", 414 + "failed_to_load": "Échec du chargement des paquets de l'utilisateur", 415 + "no_match": "Aucun paquet ne correspond à « {query} »", 416 + "filter_placeholder": "Filtrer {count} paquets..." 417 + }, 418 + "orgs_page": { 419 + "title": "Organisations", 420 + "back_to_profile": "Retour au profil", 421 + "connect_required": "Connectez le CLI local pour voir vos organisations.", 422 + "connect_hint_prefix": "Exécutez", 423 + "connect_hint_suffix": "pour commencer.", 424 + "own_orgs_only": "Vous ne pouvez voir que vos propres organisations.", 425 + "view_your_orgs": "Voir vos organisations", 426 + "loading": "Chargement des organisations...", 427 + "empty": "Aucune organisation trouvée.", 428 + "empty_hint": "Les organisations sont détectées à partir de vos paquets scopés.", 429 + "count": "{count} Organisation | {count} Organisations", 430 + "packages_count": "{count} paquet | {count} paquets" 431 + } 432 + }, 433 + "claim": { 434 + "modal": { 435 + "title": "Réserver un nom de paquet", 436 + "close_modal": "Fermer la fenêtre", 437 + "success": "Paquet réservé !", 438 + "success_detail": "{name}{'@'}0.0.0 a été publié sur npm.", 439 + "success_hint": "Vous pouvez maintenant publier de nouvelles versions de ce paquet avec npm publish.", 440 + "view_package": "Voir le paquet", 441 + "invalid_name": "Nom de paquet invalide :", 442 + "available": "Ce nom est disponible !", 443 + "taken": "Ce nom est déjà pris.", 444 + "similar_warning": "Des paquets similaires existent — npm pourrait rejeter ce nom :", 445 + "related": "Paquets associés :", 446 + "scope_warning_title": "Envisagez d'utiliser un paquet scopé", 447 + "scope_warning_text": "Les noms de paquets non scopés sont une ressource partagée. Ne réservez un nom que si vous avez l'intention de publier et maintenir un paquet. Pour les projets personnels ou organisationnels, utilisez un nom scopé comme {'@'}{username}/{name}.", 448 + "connect_required": "Connectez-vous au connecteur local pour réserver ce nom de paquet.", 449 + "connect_button": "Se connecter au connecteur", 450 + "publish_hint": "Cela publiera un paquet minimal de substitution.", 451 + "preview_json": "Aperçu du package.json", 452 + "claim_button": "Réserver le nom de paquet", 453 + "publishing": "Publication...", 454 + "checking": "Vérification de la disponibilité...", 455 + "failed_to_check": "Échec de la vérification de la disponibilité du nom", 456 + "failed_to_claim": "Échec de la réservation du paquet" 457 + } 458 + }, 459 + "code": { 460 + "files_label": "Fichiers", 461 + "no_files": "Aucun fichier dans ce répertoire", 462 + "select_version": "Sélectionner la version", 463 + "root": "racine", 464 + "lines": "{count} lignes", 465 + "toggle_tree": "Basculer l'arborescence", 466 + "close_tree": "Fermer l'arborescence", 467 + "copy_link": "Copier le lien", 468 + "raw": "Brut", 469 + "view_raw": "Voir le fichier brut", 470 + "file_too_large": "Fichier trop volumineux pour l'aperçu", 471 + "file_size_warning": "{size} dépasse la limite de 500 Ko pour la coloration syntaxique", 472 + "load_anyway": "Charger quand même", 473 + "failed_to_load": "Échec du chargement du fichier", 474 + "unavailable_hint": "Le fichier est peut-être trop volumineux ou indisponible", 475 + "version_required": "La version est requise pour parcourir le code", 476 + "go_to_package": "Aller au paquet", 477 + "loading_tree": "Chargement de l'arborescence...", 478 + "failed_to_load_tree": "Échec du chargement des fichiers pour cette version du paquet", 479 + "back_to_package": "Retour au paquet", 480 + "table": { 481 + "name": "Nom", 482 + "size": "Taille" 483 + } 484 + }, 485 + "badges": { 486 + "provenance": { 487 + "verified": "vérifié", 488 + "verified_title": "Provenance vérifiée", 489 + "verified_via": "Vérifié : publié via {provider}" 490 + }, 491 + "jsr": { 492 + "title": "aussi disponible sur JSR", 493 + "label": "jsr" 494 + } 495 + }, 496 + "about": { 497 + "title": "À propos", 498 + "heading": "à propos", 499 + "meta_description": "npmx est un navigateur rapide et moderne pour le registre npm. Une meilleure UX/DX pour explorer les paquets npm.", 500 + "back_home": "retour à l'accueil", 501 + "what_we_are": { 502 + "title": "Ce que nous sommes", 503 + "better_ux_dx": "meilleure UX/DX", 504 + "admin_ui": "interface d'administration", 505 + "description": "npmx est une {betterUxDx} pour le registre npm et ses outils. Nous fournissons une interface rapide et moderne pour explorer les paquets, avec des fonctionnalités comme le mode sombre, la navigation au clavier, la visualisation du code, et des connexions à des registres alternatifs comme {jsr}.", 506 + "admin_description": "Nous visons également à fournir une meilleure {adminUi} pour gérer vos paquets, équipes et organisations — le tout depuis le navigateur, alimenté par votre CLI npm local." 507 + }, 508 + "what_we_are_not": { 509 + "title": "Ce que nous ne sommes pas", 510 + "not_package_manager": "Pas un gestionnaire de paquets.", 511 + "not_registry": "Pas un registre.", 512 + "registry_description": "Nous n'hébergeons pas de paquets. Nous sommes juste une meilleure façon de les parcourir.", 513 + "package_managers_exist": "{already} {people} {building} {really} {cool} {package} {managers}.", 514 + "words": { 515 + "already": "Il y a", 516 + "people": "déjà", 517 + "building": "des gens", 518 + "really": "qui créent", 519 + "cool": "de vraiment", 520 + "package": "super", 521 + "managers": "gestionnaires de paquets" 522 + } 523 + } 524 + }, 525 + "header": { 526 + "home": "accueil npmx", 527 + "github": "GitHub", 528 + "packages": "paquets", 529 + "packages_dropdown": { 530 + "title": "Vos paquets", 531 + "loading": "Chargement...", 532 + "error": "Échec du chargement des paquets", 533 + "empty": "Aucun paquet trouvé", 534 + "view_all": "Tout voir" 535 + }, 536 + "orgs": "organisations", 537 + "orgs_dropdown": { 538 + "title": "Vos organisations", 539 + "loading": "Chargement...", 540 + "error": "Échec du chargement des organisations", 541 + "empty": "Aucune organisation trouvée", 542 + "view_all": "Tout voir" 543 + } 544 + } 545 + }
+555
lunaria/files/it-IT.json
··· 1 + { 2 + "seo": { 3 + "home": { 4 + "title": "npmx - Il browser dei pacchetti npm", 5 + "description": "Un browser migliore per il registro npm. Cerca, naviga ed esplora i pacchetti con un'interfaccia moderna." 6 + } 7 + }, 8 + "tagline": "un browser migliore per il registro npm", 9 + "non_affiliation_disclaimer": "non affiliato con npm, Inc.", 10 + "trademark_disclaimer": "npm è un marchio registrato da npm, Inc. Questo sito non è affiliato con npm, Inc.", 11 + "footer": { 12 + "about": "info", 13 + "docs": "docs", 14 + "source": "codice", 15 + "social": "social", 16 + "chat": "chat" 17 + }, 18 + "search": { 19 + "label": "Cerca i pacchetti npm", 20 + "placeholder": "cerca i pacchetti...", 21 + "button": "carca", 22 + "clear": "Cancella ricerca", 23 + "searching": "Cercando...", 24 + "found_packages": "Trovati {count} pacchetti", 25 + "updating": "(aggiornando...)", 26 + "no_results": "Nessun pacchetto trovato per \"{query}\"", 27 + "not_taken": "{name} è disponibile", 28 + "claim_prompt": "Ottieni il nome di questo pacchetto su npm", 29 + "claim_button": "Ottieni \"{name}\"", 30 + "want_to_claim": "Vuoi ottenere il nome di questo pacchetto?", 31 + "start_typing": "Inizia a scrivere per cercare i pacchetti", 32 + "exact_match": "esatto", 33 + "suggestion": { 34 + "user": "utente", 35 + "org": "organizzazione", 36 + "view_user_packages": "Vedi pacchetti di questo utente", 37 + "view_org_packages": "Vedi pacchetti di questa organizzazione" 38 + } 39 + }, 40 + "nav": { 41 + "popular_packages": "Pacchetti popolari", 42 + "search": "cerca", 43 + "settings": "impostazioni", 44 + "back": "Indietro" 45 + }, 46 + "settings": { 47 + "relative_dates": "Date relative", 48 + "include_types": "Includi {'@'}types durante l'installazione", 49 + "theme": "Tema", 50 + "theme_light": "Chiaro", 51 + "theme_dark": "Scuro", 52 + "theme_system": "Sistema", 53 + "language": "Lingua", 54 + "help_translate": "Aiuta a tradurre npmx", 55 + "accent_colors": "Colori di accento" 56 + }, 57 + "common": { 58 + "loading": "Caricando...", 59 + "loading_more": "Caricando altri...", 60 + "loading_packages": "Caricando i pacchetti...", 61 + "end_of_results": "Non ci sono più risultati", 62 + "try_again": "Prova di nuovo", 63 + "close": "Chiudi", 64 + "retry": "Riprova", 65 + "copy": "copia", 66 + "copied": "copiato!", 67 + "show_more": "mostra di più", 68 + "warnings": "Avvisi:", 69 + "go_back_home": "Torna alla home", 70 + "view_on_npm": "vedi su npm", 71 + "per_week": "/ settimana", 72 + "sort": { 73 + "name": "nome", 74 + "role": "ruolo", 75 + "members": "membri" 76 + }, 77 + "scroll_to_top": "Torna su" 78 + }, 79 + "package": { 80 + "not_found": "Pacchetto Non Trovato", 81 + "not_found_message": "Nessun pacchetto trovato.", 82 + "no_description": "Nessuna descrizione fornita", 83 + "show_full_description": "Mostra descrizione lunga", 84 + "not_latest": "(non recente)", 85 + "verified_provenance": "Provenienza verificata", 86 + "view_permalink": "Vedi il link permanente per questa versione", 87 + "deprecation": { 88 + "package": "Questo pacchetto è stato deprecato.", 89 + "version": "Questa versione è stata deprecata.", 90 + "no_reason": "Nessuna ragione fornita" 91 + }, 92 + "stats": { 93 + "license": "Licenza", 94 + "weekly": "Settimanale", 95 + "deps": "Deps", 96 + "install_size": "Dimensioni di installazione", 97 + "updated": "Aggiornato", 98 + "view_download_trends": "Trend dei download", 99 + "view_dependency_graph": "Vedi il grafico delle dipendenze", 100 + "inspect_dependency_tree": "Ispeziona l'albero delle dipendenze" 101 + }, 102 + "links": { 103 + "repo": "repo", 104 + "homepage": "homepage", 105 + "issues": "issues", 106 + "forks": "fork | forks", 107 + "jsr": "jsr", 108 + "code": "codice", 109 + "docs": "documenti", 110 + "fund": "finanzia" 111 + }, 112 + "get_started": { 113 + "title": "Inizia", 114 + "pm_label": "Gestore di pacchetti", 115 + "copy_command": "Copia comando di installazione", 116 + "view_types": "Vedi {package}" 117 + }, 118 + "create": { 119 + "title": "Crea nuovo progetto", 120 + "copy_command": "Copia crea comando" 121 + }, 122 + "run": { 123 + "title": "Esegui", 124 + "locally": "Esegui localmente" 125 + }, 126 + "readme": { 127 + "title": "Readme", 128 + "no_readme": "Nessuno README disponibile.", 129 + "view_on_github": "Vedi su GitHub" 130 + }, 131 + "keywords_title": "Keywords", 132 + "compatibility": "Compatibility", 133 + "card": { 134 + "publisher": "Autore", 135 + "updated": "Aggiornato", 136 + "weekly_downloads": "Download settimanali", 137 + "keywords": "Keywords", 138 + "license": "Licenza" 139 + }, 140 + "versions": { 141 + "title": "Versioni", 142 + "collapse": "Chiudi {tag}", 143 + "expand": "Espandi {tag}", 144 + "collapse_other": "Chiudi altre versioni", 145 + "expand_other": "Espandi altre versioni", 146 + "collapse_major": "Chiudi major {major}", 147 + "expand_major": "Espandi major {major}", 148 + "other_versions": "Altre versioni", 149 + "more_tagged": "Altri {count} taggati", 150 + "all_covered": "Tutte le versioni sono coperte dai tag sopra", 151 + "deprecated_title": "{version} (deprecato)" 152 + }, 153 + "dependencies": { 154 + "title": "Dipendenze ({count})", 155 + "list_label": "Dipendenze del pacchetto", 156 + "show_all": "Mostra tutte le {count} dipendenze", 157 + "optional": "opzionale" 158 + }, 159 + "peer_dependencies": { 160 + "title": "Dependenze peer ({count})", 161 + "list_label": "Dependenze peer del pacchetto", 162 + "show_all": "mostra tutte le {count} dipendenze peer" 163 + }, 164 + "optional_dependencies": { 165 + "title": "Dipendenze opzionali ({count})", 166 + "list_label": "Package dipendenze opzionali", 167 + "show_all": "mostra tutte le {count} dipendenze opzionali" 168 + }, 169 + "maintainers": { 170 + "title": "Mantenitori", 171 + "list_label": "Mantenitori dei pacchetti", 172 + "you": "(tu)", 173 + "via": "tramite {teams}", 174 + "remove_owner": "Rimuovi {name} come proprietario", 175 + "username_to_add": "Nome utente da aggiungere come proprietario", 176 + "username_placeholder": "nome utente...", 177 + "add_button": "aggiungi", 178 + "cancel_add": "Cancella aggiunta proprietario", 179 + "add_owner": "+ Aggiungi proprietario" 180 + }, 181 + "downloads": { 182 + "title": "Downloads settimanali", 183 + "date_range": "{start} a {end}", 184 + "analyze": "Analizza downloads", 185 + "modal_title": "Downloads", 186 + "granularity": "Granularità", 187 + "granularity_daily": "Giornaliero", 188 + "granularity_weekly": "Settimanale", 189 + "granularity_monthly": "Mensile", 190 + "granularity_yearly": "Annuale", 191 + "start_date": "Inizio", 192 + "end_date": "Fine", 193 + "no_data": "Nessuno dato da scaricare", 194 + "loading": "Caricando...", 195 + "y_axis_label": "{granularity} downloads" 196 + }, 197 + "install_scripts": { 198 + "title": "Script di installazione", 199 + "script_label": "(script)", 200 + "npx_packages": "{count} npx package | {count} npx packages", 201 + "currently": "al momento {version}" 202 + }, 203 + "playgrounds": { 204 + "title": "Provalo", 205 + "choose": "sciegli il playground" 206 + }, 207 + "license": { 208 + "view_spdx": "Vedi il testo della licenza su SPDX" 209 + }, 210 + "vulnerabilities": { 211 + "no_description": "Nessuna descrizione disponibile", 212 + "found": "{count} vulnerabilità trovata | {count} vulnerabilità trovate", 213 + "deps_found": "{count} vulnerabilità trovata | {count} vulnerabilità trovate", 214 + "deps_affected": "{count} dipendenza interessata | {count} dipendenze interessate", 215 + "tree_found": "{vulns} vulnerabilità in {packages}/{total} pacchetti | {vulns} vulnerabilità in {packages}/{total} pacchetti", 216 + "scanning_tree": "Scansione dell'albero delle dipendenze...", 217 + "show_all_packages": "mostra tutti i {count} pacchetti interessati", 218 + "no_summary": "Nessun riassunto", 219 + "view_details": "Vedi dettagli sulle vulnerabilitá", 220 + "path": "percorso", 221 + "more": "+{count} altri", 222 + "packages_failed": "{count} pacchetto non ha potuto essere verificato | {count} pacchetti non hanno potuto essere verificati", 223 + "no_known": "Nessuna vulnerabilità nota in {count} pacchetti", 224 + "scan_failed": "Impossibile analizzare le vulnerabilità", 225 + "depth": { 226 + "root": "Questo pacchetto", 227 + "direct": "Dipendenza diretta", 228 + "transitive": "Dipendenza transitiva (indiretta)" 229 + }, 230 + "severity": { 231 + "critical": "critica", 232 + "high": "alta", 233 + "moderate": "moderata", 234 + "low": "bassa" 235 + } 236 + }, 237 + "access": { 238 + "title": "Accesso Team", 239 + "refresh": "Aggiorna accesso team", 240 + "list_label": "Team access list", 241 + "owner": "proprietario", 242 + "rw": "rw", 243 + "ro": "ro", 244 + "revoke_access": "Revoca {name} accesso", 245 + "no_access": "Nessun accesso team configurato", 246 + "select_team_label": "Seleziona team", 247 + "loading_teams": "Caricando i team...", 248 + "select_team": "Seleziona team", 249 + "permission_label": "Livello di permessi", 250 + "permission": { 251 + "read_only": "di sola lettura", 252 + "read_write": "di sola scrittura" 253 + }, 254 + "grant_button": "concedi", 255 + "cancel_grant": "Cancella concessione d'accesso", 256 + "grant_access": "+ Concedi accesso team" 257 + }, 258 + "list": { 259 + "filter_label": "Filtra pacchetti", 260 + "filter_placeholder": "Filtra pacchetti...", 261 + "sort_label": "Ordina pacchetti", 262 + "showing_count": "Mostra {filtered} su {total} pacchetti" 263 + }, 264 + "skeleton": { 265 + "loading": "Caricando dettagli pacchetto", 266 + "license": "Licenza", 267 + "weekly": "Settimanale", 268 + "size": "Misura", 269 + "deps": "Deps", 270 + "updated": "Aggiornato", 271 + "install": "Installato", 272 + "readme": "Readme", 273 + "maintainers": "Manutentori", 274 + "keywords": "Keywords", 275 + "versions": "Versioni", 276 + "dependencies": "Dipendenze" 277 + }, 278 + "sort": { 279 + "downloads": "Più scaricati", 280 + "updated": "Aggiornati di recente", 281 + "name_asc": "Nome (A-Z)", 282 + "name_desc": "Nome (Z-A)" 283 + } 284 + }, 285 + "connector": { 286 + "status": { 287 + "connecting": "connettendo...", 288 + "connected_as": "connesso a {'@'}{user}", 289 + "connected": "connesso", 290 + "connect_cli": "connetti CLI locale", 291 + "aria_connecting": "Connessione locale in corso", 292 + "aria_connected": "Connesso localalmente", 293 + "aria_click_to_connect": "Seleziona per connettere alla connessione locale", 294 + "avatar_alt": "Immagine profilo di {user}" 295 + }, 296 + "modal": { 297 + "title": "Connessione Locale", 298 + "close_modal": "Chiudi", 299 + "connected": "Connesso", 300 + "logged_in_as": "Connesso come {'@'}{user}", 301 + "connected_hint": "Puoi ora gestire i pacchetti e le organizzazioni dalla pagina web.", 302 + "disconnect": "Disconnetti", 303 + "run_hint": "Esegui il connettore sulla tua macchina per abilitare le funzioni da amministratore.", 304 + "copy_command": "Copia comando", 305 + "copied": "Copiato", 306 + "paste_token": "Quindi incolla il token qui sotto per connetterti:", 307 + "token_label": "Token", 308 + "token_placeholder": "incolla il token qui...", 309 + "advanced": "Opzioni avanzate", 310 + "port_label": "Porta", 311 + "warning": "AVVISO", 312 + "warning_text": "Questo permette npmx accesso alla tua CLI npm. Connetti solo se ti fidi del sito.", 313 + "connect": "Connetti", 314 + "connecting": "Connettendo..." 315 + } 316 + }, 317 + "operations": { 318 + "queue": { 319 + "title": "Coda Operazioni", 320 + "clear_all": "cancella tutto", 321 + "refresh": "Aggiorna operazioni", 322 + "empty": "Nessuna operatione in coda", 323 + "empty_hint": "Aggiungi operazioni dalle pagine dei pacchetti o dell'organizzazione.", 324 + "active_label": "Operazioni attive", 325 + "otp_required": "OTP necessaria", 326 + "otp_prompt": "Inserisci la OTP per continuare", 327 + "otp_placeholder": "Inserisci il codice OTP...", 328 + "otp_label": "One-time password", 329 + "retry_otp": "Riprova la OTP", 330 + "retrying": "Riprovando...", 331 + "approve_operation": "Approva operazione", 332 + "remove_operation": "Rimuovi operazione", 333 + "approve_all": "Approva Tutto", 334 + "execute": "Esegui", 335 + "executing": "Eseguendo...", 336 + "log": "Log", 337 + "log_label": "Completa operazioni log", 338 + "remove_from_log": "Rimuovi dal log" 339 + } 340 + }, 341 + "org": { 342 + "teams": { 343 + "title": "Team", 344 + "refresh": "Aggiorna team", 345 + "filter_label": "Filtra i team", 346 + "filter_placeholder": "Filtra i team...", 347 + "sort_by": "Ordina per", 348 + "loading": "Caricando i team...", 349 + "no_teams": "Nessun team trovato", 350 + "list_label": "Team organizzativi", 351 + "delete_team": "Elimina il team {name}", 352 + "member_count": "{count} membro | {count} membri", 353 + "members_of": "Membri di {team}", 354 + "no_members": "Nessun membro", 355 + "remove_user": "Remuovi {user} dal team", 356 + "username_to_add": "Nome utente da aggiungere al {team}", 357 + "username_placeholder": "nome utente...", 358 + "add_button": "aggiungi", 359 + "cancel_add_user": "Cancella aggiunta utente", 360 + "add_member": "+ Aggiungi membro", 361 + "team_name_label": "Nome del team", 362 + "team_name_placeholder": "Nome del team...", 363 + "create_button": "crea", 364 + "no_match": "Nessun team corrisponde a \"{query}\"", 365 + "cancel_create": "Cancella creamento team", 366 + "create_team": "+ Crea team" 367 + }, 368 + "members": { 369 + "title": "Membri", 370 + "refresh": "Aggiorna membri", 371 + "filter_label": "Filtra membri", 372 + "filter_placeholder": "Filtra membri...", 373 + "filter_by_role": "Filtra per ruolo", 374 + "filter_by_team": "Filtra per team", 375 + "all_teams": "tutti i team", 376 + "sort_by": "Ordina per", 377 + "loading": "Caricando membri...", 378 + "no_members": "Nessub membro trovato", 379 + "list_label": "Team organizzativi", 380 + "change_role_for": "Cambia ruolo per {name}", 381 + "remove_from_org": "Rimuovi {name} dall'organizzazione", 382 + "view_team": "Vedi team {team}", 383 + "no_match": "Nessun membro corrisponde ai tuoi filtri", 384 + "username_label": "Nome utente", 385 + "username_placeholder": "nome utente...", 386 + "role_label": "Ruolo", 387 + "role": { 388 + "all": "tutti", 389 + "developer": "programmatore", 390 + "admin": "amministratore", 391 + "owner": "proprietario" 392 + }, 393 + "team_label": "Team", 394 + "no_team": "nessun team", 395 + "add_button": "aggiungi", 396 + "cancel_add": "Cancella aggiunta membro", 397 + "add_member": "+ Aggiungi membro" 398 + }, 399 + "public_packages": "{count} pacchetto pubblico | {count} pacchetti pubblici", 400 + "page": { 401 + "packages_title": "Pacchetti", 402 + "members_tab": "Membri", 403 + "teams_tab": "Team", 404 + "no_packages": "Nessunn pacchetto pubblico è stato trovato per", 405 + "no_packages_hint": "Questa organizzazione potrebbe non esistere o non ha pacchetti pubblici.", 406 + "failed_to_load": "Impossibile caricare i pacchetti dell'organizzazione", 407 + "no_match": "Nessun pacchetto trovato per \"{query}\"", 408 + "not_found": "Organizazzione non trovata", 409 + "not_found_message": "L'organizzazione \"{'@'}{name}\" non esiste su npm", 410 + "filter_placeholder": "Filtra {count} pacchetti..." 411 + } 412 + }, 413 + "user": { 414 + "combobox": { 415 + "add_to_org_hint": "(will also add to org)", 416 + "press_enter_to_add": "Press Enter to add {'@'}{username}", 417 + "default_placeholder": "username...", 418 + "suggestions_label": "User suggestions" 419 + }, 420 + "page": { 421 + "packages_title": "Pacchetti", 422 + "no_packages": "Nessun pacchetto pubblico è stato trovato per", 423 + "no_packages_hint": "Questo utente probabilmente non esiste o non ha pacchetti pubblici.", 424 + "failed_to_load": "Impossibile caricare i pacchetti dell’utente", 425 + "no_match": "Nessun pacchetto corrisponde a \"{query}\"", 426 + "filter_placeholder": "Filtra {count} pacchetti..." 427 + }, 428 + "orgs_page": { 429 + "title": "Organizzazioni", 430 + "back_to_profile": "Torna al profilo", 431 + "connect_required": "Collega la CLI locale per visualizzare le tue organizzazioni.", 432 + "connect_hint_prefix": "Esegui", 433 + "connect_hint_suffix": "per iniziare.", 434 + "own_orgs_only": "Puoi visualizzare solo le tue organizzazioni.", 435 + "view_your_orgs": "Visualizza le tue organizzazioni", 436 + "loading": "Caricamento organizzazioni...", 437 + "empty": "Nessuna organizzazione trovata.", 438 + "empty_hint": "Le organizzazioni vengono rilevate dai tuoi pacchetti con scope.", 439 + "count": "{count} Organizzazione | {count} Organizzazioni", 440 + "packages_count": "{count} pacchetto | {count} pacchetti" 441 + } 442 + }, 443 + "claim": { 444 + "modal": { 445 + "title": "Ottieni il nome del pacchetto", 446 + "close_modal": "Chiudi", 447 + "success": "Pacchetto ottenuto!", 448 + "success_detail": "{name}{'@'}0.0.0 è stato pubblicato su npm.", 449 + "success_hint": "Ora puoi pubblicare nuove versioni di questo pacchetto usando npm publish.", 450 + "view_package": "Vedi Pacchetto", 451 + "invalid_name": "Nome del pacchetto non valido:", 452 + "available": "Questo nome è disponibile!", 453 + "taken": "Questo nome è già occupato.", 454 + "similar_warning": "Esistono pacchetti simili — npm potrebbe rifiutare questo nome:", 455 + "related": "Pacchetti correlati:", 456 + "scope_warning_title": "Valuta l'uso di un pacchetto con scope", 457 + "scope_warning_text": "I nomi dei pacchetti senza scope sono una risorsa condivisa. Ottieni un nome solo se intendi pubblicare e mantenere un pacchetto. Per progetti personali o di organizzazione, usa un nome con scope come {'@'}{username}/{name}.", 458 + "connect_required": "Connetti il connettore locale per ottenere questo nome di pacchetto.", 459 + "connect_button": "Connetti al Connettore", 460 + "publish_hint": "Questo pubblicherà un pacchetto segnaposto.", 461 + "preview_json": "Anteprima package.json", 462 + "claim_button": "Ottieni il nome del pacchetto", 463 + "publishing": "Pubblicando...", 464 + "checking": "Verificando disponibilità...", 465 + "failed_to_check": "Verifica della disponibilità del nome non riuscita", 466 + "failed_to_claim": "Operazione di acquisizione del pacchetto non riuscota" 467 + } 468 + }, 469 + "code": { 470 + "files_label": "File", 471 + "no_files": "Nessun file in questa directory", 472 + "select_version": "Seleziona versione", 473 + "root": "root", 474 + "lines": "{count} righe", 475 + "toggle_tree": "Mostra/Nascondi albero dei file", 476 + "close_tree": "Chiudi albero dei file", 477 + "copy_link": "Copia link", 478 + "raw": "Raw", 479 + "view_raw": "Visualizza file raw", 480 + "file_too_large": "File troppo grande per l'anteprima", 481 + "file_size_warning": "{size} supera il limite di 500 KB per l'evidenziatore di sintassi", 482 + "load_anyway": "Carica comunque", 483 + "failed_to_load": "Caricamento del file non riuscito", 484 + "unavailable_hint": "Il file potrebbe essere troppo grand o non disponibile", 485 + "version_required": "È necessaria una versione per navigare il codice", 486 + "go_to_package": "Vai al pacchetto", 487 + "loading_tree": "Caricamento albero dei file...", 488 + "failed_to_load_tree": "Caricamento dei file per questa versione del pacchetto non riuscito", 489 + "back_to_package": "Torna al pacchetto", 490 + "table": { 491 + "name": "Nome", 492 + "size": "Dimensione" 493 + } 494 + }, 495 + "badges": { 496 + "provenance": { 497 + "verified": "verificato", 498 + "verified_title": "Provenienza verificata", 499 + "verified_via": "Verificato: pubblicato tramite {provider}" 500 + }, 501 + "jsr": { 502 + "title": "disponibile anche su JSR", 503 + "label": "jsr" 504 + } 505 + }, 506 + "about": { 507 + "title": "Info", 508 + "heading": "info", 509 + "meta_description": "npmx è un browser veloce e moderno per il registro npm. Una migliore UX/DX per esplorare i pacchetti npm.", 510 + "back_home": "torna alla home", 511 + "what_we_are": { 512 + "title": "Cosa siamo", 513 + "better_ux_dx": "migliore UX/DX", 514 + "admin_ui": "interfaccia di amministrazione", 515 + "description": "npmx è una {betterUxDx} per il registro npm e i suoi strumenti. Forniamo un'interfaccia veloce e moderna per esplorare i pacchetti, con funzionalità come la modalità scura, la navigazione da tastiera, la visualizzazione del codice e connessioni a registri alternativi come {jsr}.", 516 + "admin_description": "Miriamo anche a fornire una migliore {adminUi} per gestire i tuoi pacchetti, team e organizzazioni — tutto dal browser, alimentato dalla tua CLI npm locale." 517 + }, 518 + "what_we_are_not": { 519 + "title": "Cosa non siamo", 520 + "not_package_manager": "Non un gestore di pacchetti.", 521 + "not_registry": "Non un registro.", 522 + "registry_description": "Non ospitiamo pacchetti. Siamo solo un modo migliore per esplorarli.", 523 + "package_managers_exist": "{already} {people} {building} {really} {cool} {package} {managers}.", 524 + "words": { 525 + "already": "Ci sono", 526 + "people": "già", 527 + "building": "persone", 528 + "really": "che creano", 529 + "cool": "davvero", 530 + "package": "fantastici", 531 + "managers": "gestori di pacchetti" 532 + } 533 + } 534 + }, 535 + "header": { 536 + "home": "npmx home", 537 + "github": "GitHub", 538 + "packages": "pacchetti", 539 + "packages_dropdown": { 540 + "title": "I tuoi pacchetti", 541 + "loading": "Caricamento...", 542 + "error": "Caricamento dei pacchetti non riuscito", 543 + "empty": "Nessun pacchetto trovato", 544 + "view_all": "Vedi tutti" 545 + }, 546 + "orgs": "org", 547 + "orgs_dropdown": { 548 + "title": "Le tue organizzazioni", 549 + "loading": "Caricamento...", 550 + "error": "Caricamento delle organizzazioni non riuscito", 551 + "empty": "Nessuna organizzazione trovata", 552 + "view_all": "Vedi tutte" 553 + } 554 + } 555 + }
+555
lunaria/files/zh-CN.json
··· 1 + { 2 + "seo": { 3 + "home": { 4 + "title": "npmx - 更好的 npm 仓库浏览工具", 5 + "description": "更好的 npm 仓库浏览工具。通过更现代化的用户界面搜索,浏览,并探索软件包。" 6 + } 7 + }, 8 + "tagline": "更好的 npm 仓库浏览工具", 9 + "non_affiliation_disclaimer": "不与 npm, Inc. 有任何隶属关系", 10 + "trademark_disclaimer": "npm 是 npm, Inc. 的注册商标。本网站不与 npm, Inc. 有任何隶属关系。", 11 + "footer": { 12 + "about": "关于", 13 + "docs": "文档", 14 + "source": "源码", 15 + "social": "社媒", 16 + "chat": "聊天" 17 + }, 18 + "search": { 19 + "label": "搜索 npm 包", 20 + "placeholder": "搜索包...", 21 + "button": "搜索", 22 + "clear": "清除搜索", 23 + "searching": "搜索中...", 24 + "found_packages": "共找到 {count} 个包", 25 + "updating": "(更新中...)", 26 + "no_results": "未找到匹配 \"{query}\" 的包", 27 + "not_taken": "{name} 尚未被占用", 28 + "claim_prompt": "在 npm 上声明", 29 + "claim_button": "声明 \"{name}\"", 30 + "want_to_claim": "想要声明这个包名吗?", 31 + "start_typing": "输入以搜索软件包", 32 + "exact_match": "精确匹配", 33 + "suggestion": { 34 + "org": "组织", 35 + "user": "用户", 36 + "view_org_packages": "查看该组织的包", 37 + "view_user_packages": "查看该用户的包" 38 + } 39 + }, 40 + "nav": { 41 + "popular_packages": "热门软件包", 42 + "search": "搜索", 43 + "settings": "设置", 44 + "back": "返回" 45 + }, 46 + "settings": { 47 + "relative_dates": "相对时间", 48 + "include_types": "在安装时包含 {'@'}types", 49 + "language": "语言", 50 + "help_translate": "帮助翻译 npmx", 51 + "theme": "主题", 52 + "theme_dark": "深色", 53 + "theme_light": "浅色", 54 + "theme_system": "跟随系统", 55 + "accent_colors": "强调色" 56 + }, 57 + "common": { 58 + "loading": "加载中...", 59 + "loading_more": "加载更多中...", 60 + "loading_packages": "加载包中...", 61 + "end_of_results": "没有更多结果", 62 + "try_again": "再试一次", 63 + "close": "关闭", 64 + "retry": "重试", 65 + "copy": "复制", 66 + "copied": "已复制!", 67 + "show_more": "展示更多", 68 + "warnings": "警告:", 69 + "go_back_home": "返回首页", 70 + "view_on_npm": "在npm上查看", 71 + "per_week": "/ 周", 72 + "sort": { 73 + "name": "名称", 74 + "role": "角色", 75 + "members": "成员" 76 + }, 77 + "scroll_to_top": "回到顶部" 78 + }, 79 + "package": { 80 + "not_found": "没有找到包", 81 + "not_found_message": "找不到这个包。", 82 + "no_description": "没有提供描述", 83 + "show_full_description": "展示全部描述", 84 + "not_latest": "(不是最新)", 85 + "verified_provenance": "已验证的来源", 86 + "view_permalink": "查看这个版本的链接", 87 + "deprecation": { 88 + "package": "这个包已经被弃用。", 89 + "version": "这个版本已经被弃用。", 90 + "no_reason": "没有提供原因" 91 + }, 92 + "stats": { 93 + "license": "许可证", 94 + "weekly": "每周下载量", 95 + "deps": "依赖项", 96 + "install_size": "安装大小", 97 + "updated": "最近更新", 98 + "view_download_trends": "查看下载趋势", 99 + "view_dependency_graph": "查看依赖图", 100 + "inspect_dependency_tree": "查看依赖树" 101 + }, 102 + "links": { 103 + "repo": "仓库", 104 + "homepage": "主页", 105 + "issues": "议题", 106 + "forks": "复刻", 107 + "jsr": "jsr", 108 + "code": "代码", 109 + "docs": "文档", 110 + "fund": "资助" 111 + }, 112 + "get_started": { 113 + "title": "开始使用", 114 + "pm_label": "包管理器", 115 + "copy_command": "复制安装命令", 116 + "view_types": "查看 {package}" 117 + }, 118 + "create": { 119 + "title": "创建新项目", 120 + "copy_command": "复制创建命令" 121 + }, 122 + "run": { 123 + "title": "运行", 124 + "locally": "本地运行" 125 + }, 126 + "readme": { 127 + "title": "Readme", 128 + "no_readme": "没有可用的 README。", 129 + "view_on_github": "在 GitHub 上查看" 130 + }, 131 + "keywords_title": "关键词", 132 + "compatibility": "兼容性", 133 + "card": { 134 + "publisher": "发布者", 135 + "updated": "更新", 136 + "weekly_downloads": "每周下载量", 137 + "keywords": "关键词", 138 + "license": "许可证" 139 + }, 140 + "versions": { 141 + "title": "版本", 142 + "collapse": "折叠 {tag}", 143 + "expand": "展开 {tag}", 144 + "collapse_other": "折叠其他版本", 145 + "expand_other": "展开其他版本", 146 + "collapse_major": "折叠主版本 {major}", 147 + "expand_major": "展开主版本 {major}", 148 + "other_versions": "其他版本", 149 + "more_tagged": "{count}个更多标签", 150 + "all_covered": "所有版本均已包含于上方标签中。", 151 + "deprecated_title": "{version}(已弃用)" 152 + }, 153 + "dependencies": { 154 + "title": "依赖({count}个)", 155 + "list_label": "包依赖", 156 + "show_all": "显示全部 {count} 个依赖", 157 + "optional": "可选" 158 + }, 159 + "peer_dependencies": { 160 + "title": "对等依赖({count}个)", 161 + "list_label": "包对等依赖", 162 + "show_all": "显示全部 {count} 个对等依赖" 163 + }, 164 + "optional_dependencies": { 165 + "title": "可选依赖({count}个)", 166 + "list_label": "包可选依赖", 167 + "show_all": "显示全部 {count} 个可选依赖" 168 + }, 169 + "maintainers": { 170 + "title": "维护者", 171 + "list_label": "包维护者", 172 + "you": "(您)", 173 + "via": "来自 {teams}", 174 + "remove_owner": "移除 {name} 为拥有者", 175 + "username_to_add": "要添加为拥有者的用户名", 176 + "username_placeholder": "用户名...", 177 + "add_button": "添加", 178 + "cancel_add": "取消添加拥有者", 179 + "add_owner": "+ 添加拥有者" 180 + }, 181 + "downloads": { 182 + "title": "每周下载量", 183 + "date_range": "{start} 到 {end}", 184 + "analyze": "分析下载量", 185 + "modal_title": "下载量", 186 + "granularity": "粒度", 187 + "granularity_daily": "每日", 188 + "granularity_weekly": "每周", 189 + "granularity_monthly": "每月", 190 + "granularity_yearly": "每年", 191 + "start_date": "开始", 192 + "end_date": "结束", 193 + "no_data": "没有下载数据", 194 + "loading": "加载中...", 195 + "y_axis_label": "{granularity} 下载量" 196 + }, 197 + "install_scripts": { 198 + "title": "安装脚本", 199 + "script_label": "(脚本)", 200 + "npx_packages": "{count} 个 npx 包", 201 + "currently": "当前 {version}" 202 + }, 203 + "playgrounds": { 204 + "title": "试一试", 205 + "choose": "选择 Playground" 206 + }, 207 + "license": { 208 + "view_spdx": "在 SPDX 上查看许可证文本" 209 + }, 210 + "vulnerabilities": { 211 + "no_description": "没有可用的描述", 212 + "found": "{count} 个漏洞", 213 + "deps_found": "{count} 个漏洞", 214 + "deps_affected": "{count} 个受影响的依赖", 215 + "tree_found": "在 {packages}/{total} 个包中发现 {vulns} 个漏洞", 216 + "scanning_tree": "正在扫描依赖树...", 217 + "show_all_packages": "显示全部 {count} 个受影响的包", 218 + "no_summary": "没有总结", 219 + "view_details": "查看漏洞详情", 220 + "path": "路径", 221 + "more": "+{count} 更多", 222 + "packages_failed": "{count} 个包无法检查", 223 + "no_known": "在 {count} 个包中未发现已知漏洞", 224 + "scan_failed": "无法扫描漏洞", 225 + "depth": { 226 + "root": "此包", 227 + "direct": "直接依赖", 228 + "transitive": "间接依赖(传递性)" 229 + }, 230 + "severity": { 231 + "critical": "严重", 232 + "high": "高", 233 + "moderate": "中等", 234 + "low": "低" 235 + } 236 + }, 237 + "access": { 238 + "title": "团队权限", 239 + "refresh": "刷新团队权限", 240 + "list_label": "团队权限列表", 241 + "owner": "拥有者", 242 + "rw": "读写(rw)", 243 + "ro": "只读(ro)", 244 + "revoke_access": "撤销 {name} 的访问权限", 245 + "no_access": "未配置团队权限", 246 + "select_team_label": "选择团队", 247 + "loading_teams": "加载团队中...", 248 + "select_team": "选择团队", 249 + "permission_label": "权限级别", 250 + "permission": { 251 + "read_only": "只读", 252 + "read_write": "读写" 253 + }, 254 + "grant_button": "授权", 255 + "cancel_grant": "取消授权", 256 + "grant_access": "+ 授予团队权限" 257 + }, 258 + "list": { 259 + "filter_label": "筛选包", 260 + "filter_placeholder": "筛选包...", 261 + "sort_label": "排序包", 262 + "showing_count": "正在展示 {total} 中的 {filtered} 个包" 263 + }, 264 + "skeleton": { 265 + "loading": "加载包详情", 266 + "license": "许可证", 267 + "weekly": "每周", 268 + "size": "大小", 269 + "deps": "依赖", 270 + "updated": "更新", 271 + "install": "安装", 272 + "readme": "Readme", 273 + "maintainers": "维护者", 274 + "keywords": "关键词", 275 + "versions": "版本", 276 + "dependencies": "依赖" 277 + }, 278 + "sort": { 279 + "downloads": "最多下载的", 280 + "updated": "最近更新的", 281 + "name_asc": "名称(A-Z)", 282 + "name_desc": "名称(Z-A)" 283 + } 284 + }, 285 + "connector": { 286 + "status": { 287 + "connecting": "连接中...", 288 + "connected_as": "已连接为 {'@'}{user}", 289 + "connected": "已连接", 290 + "connect_cli": "连接本地 CLI", 291 + "aria_connecting": "连接到本地连接器中", 292 + "aria_connected": "已连接到本地连接器", 293 + "aria_click_to_connect": "点击连接到本地连接器", 294 + "avatar_alt": "{user} 的头像" 295 + }, 296 + "modal": { 297 + "title": "本地连接器", 298 + "close_modal": "关闭对话框", 299 + "connected": "已连接", 300 + "logged_in_as": "登录为 {'@'}{user}", 301 + "connected_hint": "现在您可以通过 Web UI 管理包和组织。", 302 + "disconnect": "断开连接", 303 + "run_hint": "在您的机器上运行连接器以启用管理功能。", 304 + "copy_command": "复制命令", 305 + "copied": "已复制", 306 + "paste_token": "再在下方粘贴令牌以连接:", 307 + "token_label": "令牌", 308 + "token_placeholder": "粘贴令牌...", 309 + "advanced": "高级选项", 310 + "port_label": "端口", 311 + "warning": "警告", 312 + "warning_text": "这将允许 npmx 访问您的 npm CLI。请仅连接您信任的站点。", 313 + "connect": "连接", 314 + "connecting": "连接中..." 315 + } 316 + }, 317 + "operations": { 318 + "queue": { 319 + "title": "操作队列", 320 + "clear_all": "清除所有", 321 + "refresh": "刷新操作", 322 + "empty": "没有排队中的操作", 323 + "empty_hint": "从包或组织页面添加操作", 324 + "active_label": "运行中的操作", 325 + "otp_required": "需要 OTP", 326 + "otp_prompt": "输入 OTP 继续", 327 + "otp_placeholder": "输入 OTP 代码...", 328 + "otp_label": "一次性密码", 329 + "retry_otp": "使用 OTP 重试", 330 + "retrying": "重试中...", 331 + "approve_operation": "批准操作", 332 + "remove_operation": "移除操作", 333 + "approve_all": "批准所有", 334 + "execute": "执行", 335 + "executing": "执行中...", 336 + "log": "日志", 337 + "log_label": "已完成的操作日志", 338 + "remove_from_log": "从日志中移除" 339 + } 340 + }, 341 + "org": { 342 + "teams": { 343 + "title": "团队", 344 + "refresh": "刷新团队", 345 + "filter_label": "筛选团队", 346 + "filter_placeholder": "筛选团队...", 347 + "sort_by": "按排序", 348 + "loading": "加载团队...", 349 + "no_teams": "未找到团队", 350 + "list_label": "组织团队", 351 + "delete_team": "删除团队 {name}", 352 + "member_count": "{count} 个成员", 353 + "members_of": "团队 {team} 的成员", 354 + "no_members": "没有成员", 355 + "remove_user": "从团队 {user} 中移除", 356 + "username_to_add": "要添加到 {team} 的用户名", 357 + "username_placeholder": "用户名...", 358 + "add_button": "添加", 359 + "cancel_add_user": "取消添加用户", 360 + "add_member": "+ 添加成员", 361 + "team_name_label": "团队名称", 362 + "team_name_placeholder": "团队名称...", 363 + "create_button": "创建", 364 + "no_match": "未找到匹配 \"{query}\" 的团队", 365 + "cancel_create": "取消创建团队", 366 + "create_team": "+ 创建团队" 367 + }, 368 + "members": { 369 + "title": "成员", 370 + "refresh": "刷新成员", 371 + "filter_label": "筛选成员", 372 + "filter_placeholder": "筛选成员...", 373 + "filter_by_role": "按角色筛选", 374 + "filter_by_team": "按团队筛选", 375 + "all_teams": "所有团队", 376 + "sort_by": "按排序", 377 + "loading": "加载成员...", 378 + "no_members": "未找到成员", 379 + "list_label": "组织成员", 380 + "change_role_for": "更改 {name} 的角色", 381 + "remove_from_org": "从组织中移除 {name}", 382 + "view_team": "查看 {team} 团队", 383 + "no_match": "未找到匹配筛选条件的成员", 384 + "username_label": "用户名", 385 + "username_placeholder": "用户名...", 386 + "role_label": "角色", 387 + "role": { 388 + "all": "所有", 389 + "developer": "开发者", 390 + "admin": "管理员", 391 + "owner": "拥有者" 392 + }, 393 + "team_label": "团队", 394 + "no_team": "没有团队", 395 + "add_button": "添加", 396 + "cancel_add": "取消添加成员", 397 + "add_member": "+ 添加成员" 398 + }, 399 + "public_packages": "{count} 个公开包", 400 + "page": { 401 + "packages_title": "软件包", 402 + "members_tab": "成员", 403 + "teams_tab": "团队", 404 + "no_packages": "未找到公开包", 405 + "no_packages_hint": "这个组织可能不存在或没有公开包。", 406 + "failed_to_load": "加载组织包失败", 407 + "no_match": "未找到匹配 \"{query}\" 的包", 408 + "not_found": "未找到组织", 409 + "not_found_message": "组织 \"{'@'}{name}\" 在 npm 上不存在", 410 + "filter_placeholder": "筛选 {count} 个包..." 411 + } 412 + }, 413 + "user": { 414 + "combobox": { 415 + "add_to_org_hint": "(也会添加到组织)", 416 + "press_enter_to_add": "按 Enter 添加 {'@'}{username}", 417 + "default_placeholder": "用户名...", 418 + "suggestions_label": "用户建议" 419 + }, 420 + "page": { 421 + "packages_title": "软件包", 422 + "no_packages": "未找到公开包", 423 + "no_packages_hint": "这个用户可能不存在或没有公开包。", 424 + "failed_to_load": "加载用户包失败", 425 + "no_match": "未找到匹配 \"{query}\" 的包", 426 + "filter_placeholder": "筛选 {count} 个包..." 427 + }, 428 + "orgs_page": { 429 + "title": "组织", 430 + "back_to_profile": "返回个人资料", 431 + "connect_required": "连接本地 CLI 以查看您的组织。", 432 + "connect_hint_prefix": "运行", 433 + "connect_hint_suffix": "以开始。", 434 + "own_orgs_only": "您只能查看自己的组织。", 435 + "view_your_orgs": "查看您的组织", 436 + "loading": "加载组织中...", 437 + "empty": "未找到组织。", 438 + "empty_hint": "已根据您限定范围的包名中检测到组织。", 439 + "count": "{count} 个组织", 440 + "packages_count": "{count} 个包" 441 + } 442 + }, 443 + "claim": { 444 + "modal": { 445 + "title": "声明包名", 446 + "close_modal": "关闭对话框", 447 + "success": "包已声明!", 448 + "success_detail": "{name}{'@'}0.0.0 已发布到 npm。", 449 + "success_hint": "您现在可以使用 npm publish 发布新版本到这个包。", 450 + "view_package": "查看包", 451 + "invalid_name": "无效的包名:", 452 + "available": "这个名称可用!", 453 + "taken": "这个名称已被占用。", 454 + "similar_warning": "存在相似的包 — npm 可能会拒绝这个名称:", 455 + "related": "相关包:", 456 + "scope_warning_title": "考虑使用一个限定范围的包", 457 + "scope_warning_text": "未限定范围的包名是共享资源。当您计划发布并持续维护一个包时,方可声明此类名称。对于个人或组织项目,请使用限定范围的包名,如 {'@'}{username}/{name}。", 458 + "connect_required": "连接到本地连接器以声明这个包名。", 459 + "connect_button": "连接到连接器", 460 + "publish_hint": "这将发布一个最小的占位符包。", 461 + "preview_json": "预览 package.json", 462 + "claim_button": "声明包名", 463 + "publishing": "发布中...", 464 + "checking": "检查可用性中...", 465 + "failed_to_check": "检查名称可用性失败", 466 + "failed_to_claim": "声明包名失败" 467 + } 468 + }, 469 + "code": { 470 + "files_label": "文件", 471 + "no_files": "这个目录中没有文件", 472 + "select_version": "选择版本", 473 + "root": "根目录", 474 + "lines": "{count} 行", 475 + "toggle_tree": "切换文件树", 476 + "close_tree": "关闭文件树", 477 + "copy_link": "复制链接", 478 + "raw": "原始文件", 479 + "view_raw": "查看原始文件", 480 + "file_too_large": "文件过大,无法预览", 481 + "file_size_warning": "{size} 超出了 500KB 的语法高亮限制", 482 + "load_anyway": "仍要加载", 483 + "failed_to_load": "加载文件失败", 484 + "unavailable_hint": "文件可能太大或不可用", 485 + "version_required": "需要版本来浏览代码", 486 + "go_to_package": "跳转到包", 487 + "loading_tree": "加载文件树中...", 488 + "failed_to_load_tree": "加载此包版本的文件失败", 489 + "back_to_package": "返回包", 490 + "table": { 491 + "name": "名称", 492 + "size": "大小" 493 + } 494 + }, 495 + "badges": { 496 + "provenance": { 497 + "verified": "已验证", 498 + "verified_title": "已验证的来源", 499 + "verified_via": "已验证:通过 {provider} 发布" 500 + }, 501 + "jsr": { 502 + "title": "也适用于 JSR", 503 + "label": "jsr" 504 + } 505 + }, 506 + "about": { 507 + "title": "关于", 508 + "heading": "关于", 509 + "meta_description": "npmx 是一个快速、现代的 npm 仓库浏览器。为探索 npm 包提供更好的用户体验和开发者体验。", 510 + "back_home": "返回首页", 511 + "what_we_are": { 512 + "title": "我们是什么", 513 + "better_ux_dx": "更好的用户体验和开发者体验", 514 + "admin_ui": "管理界面", 515 + "description": "npmx 为 npm 包仓库及其工具提供{betterUxDx}。我们提供快速、现代的界面来探索包,具有深色模式、键盘导航、代码浏览以及与 {jsr} 等替代仓库的连接等功能。", 516 + "admin_description": "我们还致力于提供更好的{adminUi}来管理您的包、团队和组织——全部在浏览器中完成,由您本地的 npm CLI 驱动。" 517 + }, 518 + "what_we_are_not": { 519 + "title": "我们不是什么", 520 + "not_package_manager": "不是包管理器。", 521 + "not_registry": "不是仓库。", 522 + "registry_description": "我们不托管包。我们只是一种更好的浏览方式。", 523 + "package_managers_exist": "{already}{people}{building}{really}{cool}{package}{managers}。", 524 + "words": { 525 + "already": "已经有", 526 + "people": "很多", 527 + "building": "人在", 528 + "really": "开发", 529 + "cool": "非常", 530 + "package": "棒的", 531 + "managers": "包管理器" 532 + } 533 + } 534 + }, 535 + "header": { 536 + "home": "npmx 主页", 537 + "github": "GitHub", 538 + "packages": "包", 539 + "packages_dropdown": { 540 + "title": "您的包", 541 + "loading": "加载中...", 542 + "error": "加载包失败", 543 + "empty": "未找到包", 544 + "view_all": "查看全部" 545 + }, 546 + "orgs": "组织", 547 + "orgs_dropdown": { 548 + "title": "您的组织", 549 + "loading": "加载中...", 550 + "error": "加载组织失败", 551 + "empty": "未找到组织", 552 + "view_all": "查看全部" 553 + } 554 + } 555 + }
+3
lunaria/lunaria.ts
··· 1 1 import { createLunaria } from '@lunariajs/core' 2 2 import { mkdirSync, writeFileSync } from 'node:fs' 3 3 import { Page } from './components.ts' 4 + import { prepareJsonFiles } from './prepare-json-files.ts' 5 + 6 + await prepareJsonFiles() 4 7 5 8 const lunaria = await createLunaria() 6 9 const status = await lunaria.getFullStatus()
+51
lunaria/prepare-json-files.ts
··· 1 + import type { Locale } from '@lunariajs/core' 2 + import type { LocaleObject } from '@nuxtjs/i18n' 3 + import * as path from 'node:path' 4 + import * as fs from 'node:fs/promises' 5 + import { currentLocales } from '../config/i18n.ts' 6 + import { deepCopy } from '@intlify/shared' 7 + 8 + const destFolder = path.resolve('lunaria/files') 9 + const localesFolder = path.resolve('i18n/locales') 10 + 11 + const defaultLocale = currentLocales.find(l => l.code === 'en-US')! 12 + export const sourceLocale = { 13 + label: defaultLocale.name, 14 + lang: defaultLocale.code, 15 + } 16 + export const locales: Locale[] = currentLocales 17 + .filter(l => l.code !== 'en-US') 18 + .map(l => ({ 19 + label: l.name, 20 + lang: l.code, 21 + })) 22 + 23 + export async function prepareJsonFiles() { 24 + await fs.rm(destFolder, { recursive: true, force: true }) 25 + await fs.mkdir(destFolder) 26 + await Promise.all(currentLocales.map(l => mergeLocale(l))) 27 + } 28 + 29 + async function loadJsonFile(name: string) { 30 + return JSON.parse(await fs.readFile(path.resolve(`${localesFolder}/${name}`), 'utf8')) 31 + } 32 + 33 + async function mergeLocale(locale: LocaleObject) { 34 + if (locale.file || locale.files.length === 1) { 35 + const json = locale.file || locale.files[0] 36 + await fs.cp(path.resolve(`${localesFolder}/${json}`), path.resolve(`${destFolder}/${json}`)) 37 + return 38 + } 39 + 40 + const source = await loadJsonFile(locale.files[0] as string) 41 + let currentSource: unknown 42 + for (let i = 1; i < locale.files.length; i++) { 43 + currentSource = await loadJsonFile(locale.files[i] as string) 44 + deepCopy(currentSource, source) 45 + } 46 + 47 + await fs.writeFile( 48 + path.resolve(`${destFolder}/${locale.code}.json`), 49 + JSON.stringify(source, null, 2), 50 + ) 51 + }
+5 -9
nuxt.config.ts
··· 1 + import { currentLocales } from './config/i18n' 2 + 1 3 export default defineNuxtConfig({ 2 4 modules: [ 3 5 function (_, nuxt) { ··· 47 49 48 50 app: { 49 51 head: { 50 - htmlAttrs: { lang: 'en' }, 52 + htmlAttrs: { lang: 'en-US' }, 51 53 link: [ 52 54 { 53 55 rel: 'search', ··· 178 180 }, 179 181 180 182 i18n: { 181 - defaultLocale: 'en', 183 + locales: currentLocales, 184 + defaultLocale: 'en-US', 182 185 strategy: 'no_prefix', 183 186 detectBrowserLanguage: false, 184 187 langDir: 'locales', 185 - locales: [ 186 - { code: 'en', language: 'en-US', name: 'English', file: 'en.json' }, 187 - { code: 'de', language: 'de-DE', name: 'Deutsch', file: 'de.json' }, 188 - { code: 'fr', language: 'fr-FR', name: 'Français', file: 'fr.json' }, 189 - { code: 'zh-CN', language: 'zh-CN', name: '简体中文', file: 'zh-CN.json' }, 190 - { code: 'it', language: 'it', name: 'Italiano', file: 'it.json' }, 191 - ], 192 188 }, 193 189 })
+2
package.json
··· 31 31 "@deno/doc": "jsr:^0.189.1", 32 32 "@iconify-json/simple-icons": "^1.2.67", 33 33 "@iconify-json/vscode-icons": "^1.2.40", 34 + "@intlify/core-base": "^11.1.12", 35 + "@intlify/shared": "^11.2.8", 34 36 "@lunariajs/core": "https://pkg.pr.new/lunariajs/lunaria/@lunariajs/core@f07e1a3", 35 37 "@nuxt/a11y": "1.0.0-alpha.1", 36 38 "@nuxt/fonts": "^0.13.0",
+6
pnpm-lock.yaml
··· 29 29 '@iconify-json/vscode-icons': 30 30 specifier: ^1.2.40 31 31 version: 1.2.40 32 + '@intlify/core-base': 33 + specifier: ^11.1.12 34 + version: 11.2.8 35 + '@intlify/shared': 36 + specifier: ^11.2.8 37 + version: 11.2.8 32 38 '@lunariajs/core': 33 39 specifier: https://pkg.pr.new/lunariajs/lunaria/@lunariajs/core@f07e1a3 34 40 version: https://pkg.pr.new/lunariajs/lunaria/@lunariajs/core@f07e1a3