nextjs-analyzer
Version:
A modular tool that comprehensively analyzes Next.js projects. Includes component, performance, security, SEO, data fetching, code quality, and historical analysis features.
635 lines (634 loc) • 31.2 kB
JavaScript
/**
* Türkçe dil dosyası
*/
module.exports = {
common: {
error: "Hata",
success: "Başarılı",
warning: "Uyarı",
info: "Bilgi"
},
cli: {
name: "nextjs-analyzer",
description: "Next.js projelerini analiz eden modüler araç",
commands: {
analyze: {
description: "Tüm analiz modüllerini çalıştır",
options: {
path: "Analiz edilecek Next.js projesinin yolu",
output: "Analiz sonuçlarının kaydedileceği dosya yolu",
format: "Çıktı formatı (text, json veya html)",
verbose: "Detaylı çıktı göster"
},
messages: {
moduleSelection: "Hangi modülü çalıştırmak istiyorsunuz?",
formatSelection: "Hangi formatta çıktı almak istiyorsunuz?",
allModules: "Tüm modüller: Tüm analiz modüllerini çalıştır",
runningModules: "Modüller çalıştırılıyor...",
visualizing: "Sonuçlar görselleştiriliyor...",
completed: "Analiz tamamlandı."
}
},
listModules: {
description: "Kullanılabilir analiz modüllerini listeler",
messages: {
availableModules: "Kullanılabilir Analiz Modülleri:"
}
},
settings: {
description: "Uygulama ayarlarını yapılandır",
messages: {
languageSelection: "Hangi dili kullanmak istiyorsunuz?",
languageChanged: "Dil değiştirildi: {language}",
settingsSaved: "Ayarlar kaydedildi."
}
}
},
formats: {
text: "Metin (text)",
html: "HTML",
json: "JSON"
}
},
analyzer: {
messages: {
analyzing: "Next.js projesi analiz ediliyor...",
noNextJsDirs: "Hata: Next.js app veya pages dizini bulunamadı.",
noJsFiles: "Hata: Hiç JavaScript/TypeScript dosyası bulunamadı.",
filesFound: "{count} dosya bulundu.",
analysisFailed: "Analiz tamamlanamadı.",
unexpectedError: "Beklenmeyen bir hata oluştu:"
}
},
modules: {
component: {
name: "component",
description: "Next.js projelerinde server ve client componentleri analiz eder",
types: {
server: "Server Component",
client: "Client Component"
}
},
performance: {
name: "performance",
description: "Performans metrikleri ve optimizasyon önerileri sunar",
imageOptimization: {
title: "Image Optimizasyon",
fullyOptimized: "Tüm görüntüler optimize edilmiş. Harika!",
notFullyOptimized: "Toplam {totalImages} görüntüden {nonOptimizedCount} tanesi optimize edilmemiş.",
nonOptimizedImages: "Optimize Edilmemiş Görüntüler",
issues: {
noNextImage: "Next.js Image komponenti kullanılmıyor",
noWidthHeight: "Image komponentinde width ve/veya height belirtilmemiş",
noPriority: "Hero/banner görüntüsü için priority attribute'u kullanılmamış"
},
recommendations: {
useNextImage: "next/image import edip, <Image> komponenti kullanın",
addWidthHeight: "CLS (Cumulative Layout Shift) sorunlarını önlemek için width ve height belirtin",
addPriority: "LCP (Largest Contentful Paint) metriğini iyileştirmek için hero görüntülerine priority ekleyin"
}
},
bundleSize: {
title: "Bundle Size Analizi",
largeComponents: {
title: "Büyük Komponentler",
noLargeComponents: "Büyük komponent tespit edilmedi. Harika!",
recommendation: "Komponenti daha küçük parçalara bölmeyi düşünün"
},
largeImports: {
title: "Büyük Kütüphaneler",
noLargeImports: "Büyük kütüphane import'u tespit edilmedi. Harika!",
recommendations: {
lodash: "Sadece ihtiyaç duyulan fonksiyonları import edin: import { debounce } from \"lodash/debounce\"",
moment: "date-fns veya day.js gibi daha hafif alternatifleri kullanın",
chartjs: "Sadece ihtiyaç duyulan chart türlerini import edin",
threejs: "Dynamic import ile lazy loading yapın",
monaco: "Dynamic import ile lazy loading yapın",
draftjs: "Dynamic import ile lazy loading yapın",
quill: "Dynamic import ile lazy loading yapın",
reactBootstrap: "Sadece ihtiyaç duyulan komponentleri import edin",
materialUi: "@mui/material'in tree-shakeable versiyonunu kullanın",
materialCore: "Sadece ihtiyaç duyulan komponentleri import edin",
mui: "Sadece ihtiyaç duyulan komponentleri import edin",
default: "Dynamic import ile lazy loading yapın"
}
}
},
visualize: {
title: "Performans Analizi",
file: "Dosya",
issue: "Sorun",
recommendation: "Öneri",
size: "Boyut",
library: "Kütüphane",
source: "Kaynak"
}
},
security: {
name: "security",
description: "Güvenlik açıklarını ve riskleri tespit eder",
serverComponent: {
title: "Server Component Güvenliği",
noIssues: "Server component'lerde güvenlik sorunu tespit edilmedi. Harika!",
issues: {
sensitiveEnvVars: "Hassas çevresel değişkenler doğrudan server component'te kullanılıyor",
sqlInjection: "Olası SQL injection riski",
fileSystemAccess: "Kullanıcı girdisi ile dosya sistemi erişimi",
evalUsage: "eval() veya new Function() kullanımı"
},
recommendations: {
title: "Server Component Güvenliği",
description: "Server component'ler, hassas bilgileri içerebilir. Bu bilgilerin client'a sızdırılmamasına dikkat edin.",
envVars: {
title: "Çevresel Değişkenler",
description: "Server component'lerde kullanılan çevresel değişkenler, client bundle'a dahil edilmez. Ancak, bu değişkenleri doğrudan JSX içinde kullanmak, bu bilgilerin client'a sızmasına neden olabilir."
},
dataValidation: {
title: "Veri Doğrulama",
description: "Server component'lerde kullanıcı girdilerini her zaman doğrulayın ve temizleyin."
},
sensitiveEnvVars: "Hassas bilgileri içeren çevresel değişkenleri doğrudan client'a göndermekten kaçının. Bunun yerine, API route'lar kullanarak bu bilgileri güvenli bir şekilde işleyin.",
sqlInjection: "SQL sorgularında kullanıcı girdilerini doğrudan kullanmak yerine, parametreli sorgular veya ORM kullanın.",
fileSystemAccess: "Kullanıcı girdilerini dosya yollarında kullanmak tehlikelidir. Girdileri doğrulayın ve güvenli hale getirin.",
evalUsage: "eval() ve new Function() kullanımından kaçının, çünkü bunlar kod enjeksiyonu saldırılarına açıktır."
}
},
apiRoute: {
title: "API Route Güvenliği",
noIssues: "API route'larda güvenlik sorunu tespit edilmedi. Harika!",
issues: {
corsConfig: "CORS yapılandırması eksik",
corsWildcard: "CORS yapılandırması çok geniş (wildcard *)",
rateLimiting: "Rate limiting eksik",
authentication: "Veri değiştiren API endpoint'inde authentication kontrolü eksik",
inputValidation: "Input validation eksik",
httpMethod: "HTTP method kontrolü eksik"
},
recommendations: {
title: "API Route Güvenliği",
description: "API route'lar, uygulamanızın dış dünyaya açılan kapılarıdır. Bu nedenle, güvenlik önlemlerini dikkatli bir şekilde uygulamalısınız.",
cors: {
title: "CORS Yapılandırması",
description: "CORS yapılandırması, API'nize hangi domain'lerden erişilebileceğini kontrol eder. Wildcard (*) kullanmak yerine, belirli domain'lere izin verin."
},
rateLimiting: {
title: "Rate Limiting",
description: "Rate limiting, API'nize yapılan istekleri sınırlar ve DDoS saldırılarına karşı koruma sağlar."
},
auth: {
title: "Authentication ve Authorization",
description: "Veri değiştiren API endpoint'lerinde her zaman authentication ve authorization kontrolü yapın."
},
inputValidation: {
title: "Input Validation",
description: "Kullanıcı girdilerini her zaman doğrulayın ve temizleyin. Bu, injection saldırılarına karşı koruma sağlar."
},
corsConfig: "API route'larda CORS yapılandırması ekleyin. next-cors veya manuel olarak Access-Control-Allow-Origin header'ı ekleyin.",
corsWildcard: "Wildcard (*) yerine, belirli domain'lere izin verin.",
rateLimiting: "API route'larda rate limiting ekleyin. express-rate-limit veya benzer bir kütüphane kullanabilirsiniz.",
authentication: "Veri değiştiren API endpoint'lerinde authentication kontrolü ekleyin.",
inputValidation: "API route'larda input validation ekleyin. Joi, Yup, Zod gibi kütüphaneler kullanabilirsiniz.",
httpMethod: "API route'larda HTTP method kontrolü ekleyin. Örneğin: if (req.method !== \"POST\") { return res.status(405).end(); }"
}
},
general: {
title: "Genel Güvenlik",
noIssues: "Genel güvenlik sorunu tespit edilmedi. Harika!",
issues: {
oldNextVersion: "Eski Next.js sürümü kullanılıyor ({version})",
insecurePackage: "Güvenlik açığı olan paket: {package}@{version}",
envNotIgnored: "{file} dosyası .gitignore'da değil",
sensitiveEnvVar: "Hassas bilgi içeren çevresel değişken: {key}",
cspMissing: "Content Security Policy (CSP) eksik",
unsafeConfig: "Güvensiz yapılandırma: dangerouslyAllowSVG veya dangerouslyAllowHTML"
},
recommendations: {
title: "Genel Güvenlik",
dependencies: {
title: "Bağımlılık Güvenliği",
description: "Bağımlılıklarınızı düzenli olarak güncelleyin ve güvenlik açıklarını kontrol edin. npm audit veya yarn audit komutlarını kullanabilirsiniz."
},
envSecurity: {
title: "Çevresel Değişken Güvenliği",
description: ".env dosyalarını her zaman .gitignore'a ekleyin ve hassas bilgileri güvenli bir şekilde yönetin."
},
csp: {
title: "Content Security Policy",
description: "Content Security Policy (CSP), XSS saldırılarına karşı güçlü bir koruma sağlar. next.config.js dosyasında CSP başlıklarını yapılandırın."
},
safeConfig: {
title: "Güvenli Yapılandırma",
description: "dangerouslyAllowSVG, dangerouslyAllowHTML gibi güvensiz yapılandırmalardan kaçının."
},
securityAudits: {
title: "Düzenli Güvenlik Denetimleri",
description: "Uygulamanızı düzenli olarak güvenlik açıklarına karşı denetleyin ve güncel tutun."
},
oldNextVersion: "Güvenlik güncellemeleri için Next.js'i en son sürüme yükseltin.",
insecurePackage: "{package} paketini en az {minVersion} sürümüne yükseltin.",
envNotIgnored: "{file} dosyasını .gitignore'a ekleyin. Hassas bilgiler repository'de saklanmamalıdır.",
sensitiveEnvVar: "{file} dosyasını .gitignore'a ekleyin ve hassas bilgileri güvenli bir şekilde yönetin.",
cspMissing: "next.config.js dosyasında Content Security Policy ekleyin. Bu, XSS saldırılarına karşı koruma sağlar.",
unsafeConfig: "Bu yapılandırmalar XSS saldırılarına açık olabilir. Mümkünse kullanmaktan kaçının."
}
},
visualize: {
title: "Güvenlik Analizi",
summary: "Özet",
totalIssues: "Toplam {count} güvenlik sorunu tespit edildi:",
criticalIssues: "Kritik",
highIssues: "Yüksek",
mediumIssues: "Orta",
lowIssues: "Düşük",
detectedIssues: "Tespit Edilen Sorunlar",
recommendations: "Öneriler",
file: "Dosya",
issue: "Sorun",
severity: "Önem Derecesi",
recommendation: "Öneri"
}
},
seo: {
name: "seo",
description: "SEO uyumluluğunu ve meta etiketleri analiz eder",
metaTags: {
title: "Meta Tag Sorunları",
noIssues: "Meta tag sorunu tespit edilmedi. Harika!",
issues: {
titleMissing: "Title tag eksik",
descriptionMissing: "Meta description eksik",
ogMissing: "Open Graph meta tag'leri eksik",
twitterMissing: "Twitter Card meta tag'leri eksik",
canonicalMissing: "Canonical URL eksik",
robotsBlocking: "Robots meta tag'i sayfanın indekslenmesini engelliyor",
viewportMissing: "Viewport meta tag eksik",
langMissing: "HTML lang attribute eksik"
},
recommendations: {
title: "Meta Tag Önerileri",
titleTag: "Sayfaya title tag ekleyin. Bu, SEO için çok önemlidir.",
descriptionTag: "Sayfaya meta description ekleyin. Bu, arama sonuçlarında görüntülenen açıklamadır.",
ogTags: "Sosyal medya paylaşımları için Open Graph meta tag'leri ekleyin.",
twitterTags: "Twitter paylaşımları için Twitter Card meta tag'leri ekleyin.",
canonicalUrl: "Duplicate content sorunlarını önlemek için canonical URL ekleyin.",
robotsTags: "Eğer bu sayfa indekslenmeli ise, noindex ve nofollow değerlerini kaldırın.",
viewportTag: "Mobil uyumluluk için viewport meta tag ekleyin.",
langAttribute: "Erişilebilirlik ve SEO için HTML lang attribute ekleyin.",
nextSeo: {
title: "next-seo Kullanımı",
description: "next-seo paketi, Next.js projelerinde SEO yönetimini kolaylaştırır. Bu paketi kullanarak, tüm meta tag'leri merkezi bir şekilde yönetebilirsiniz."
},
dynamicMetaTags: {
title: "Dinamik Meta Tag'ler",
description: "Dinamik içerikli sayfalar için, sayfa içeriğine göre dinamik meta tag'ler oluşturun. Bu, arama motorlarının sayfanızı daha iyi anlamasını sağlar."
},
structuredData: {
title: "Structured Data",
description: "JSON-LD formatında structured data ekleyin. Bu, arama sonuçlarında zengin snippet'ler görüntülenmesini sağlar."
},
hreflang: {
title: "Hreflang Tag'leri",
description: "Çok dilli siteler için hreflang tag'leri ekleyin. Bu, arama motorlarının doğru dildeki sayfayı göstermesini sağlar."
}
}
},
semanticHtml: {
title: "Semantik HTML Sorunları",
noIssues: "Semantik HTML sorunu tespit edilmedi. Harika!",
issues: {
multipleH1: "Birden fazla H1 tag'i kullanılmış",
h2BeforeH1: "H2 tag'i H1'den önce kullanılmış",
h3BeforeH2: "H3 tag'i H2'den önce kullanılmış",
noSemanticTags: "Semantik HTML tag'leri kullanılmamış",
imgWithoutAlt: "Image tag'lerinde alt attribute eksik",
genericLinkText: "Jenerik link text'leri kullanılmış"
},
recommendations: {
title: "Semantik HTML Önerileri",
headingHierarchy: "Heading hiyerarşisini düzgün kullanın. H1 tag'i sayfanın en üstünde olmalıdır.",
h3AfterH2: "Heading hiyerarşisini düzgün kullanın. H3 tag'leri H2'lerden sonra gelmelidir.",
useSemanticTags: "div ve span yerine semantik HTML5 tag'lerini (header, nav, main, article, section, aside, footer) kullanın.",
addAltAttributes: "Tüm image tag'lerine alt attribute ekleyin. Bu, erişilebilirlik ve SEO için önemlidir.",
descriptiveLinkText: "\"here\", \"click\", \"link\", \"read more\" gibi jenerik link text'leri yerine, daha açıklayıcı link text'leri kullanın.",
semanticHtml: {
title: "Semantik HTML Kullanımı",
description: "Semantik HTML tag'leri, sayfanızın yapısını daha iyi tanımlar ve arama motorlarının içeriğinizi daha iyi anlamasını sağlar."
},
headings: {
title: "Heading Hiyerarşisi",
description: "Düzgün bir heading hiyerarşisi kullanın. Her sayfada bir H1 tag'i olmalı ve diğer heading'ler hiyerarşik olarak sıralanmalıdır."
},
altAttributes: {
title: "Alt Attribute",
description: "Tüm image tag'lerine alt attribute ekleyin. Bu, görsel içeriğin metin alternatifini sağlar ve erişilebilirlik için önemlidir."
},
linkTexts: {
title: "Açıklayıcı Link Text'leri",
description: "Link text'leri, link'in nereye gittiğini açıkça belirtmelidir. \"here\", \"click\" gibi jenerik text'ler yerine, daha açıklayıcı text'ler kullanın."
}
}
},
accessibility: {
title: "Erişilebilirlik Sorunları",
noIssues: "Erişilebilirlik sorunu tespit edilmedi. Harika!",
issues: {
ariaAttributesMissing: "ARIA attribute'leri eksik",
formLabelsMissing: "Form input'ları için label eksik",
lowContrast: "Düşük kontrast oranı",
keyboardNavigationMissing: "Klavye navigasyonu eksik",
negativeTabIndex: "tabIndex=\"-1\" kullanımı"
},
recommendations: {
title: "Erişilebilirlik Önerileri",
addAriaAttributes: "Erişilebilirlik için ARIA attribute'leri ve role'ler ekleyin.",
addFormLabels: "Tüm form input'ları için label ekleyin ve for attribute ile input'a bağlayın.",
improveContrast: "Metin ve arka plan arasında yeterli kontrast oranı sağlayın. WCAG 2.1 AA standardına göre, normal metin için en az 4.5:1, büyük metin için en az 3:1 kontrast oranı olmalıdır.",
addKeyboardNavigation: "onClick event'leri için klavye event'leri de ekleyin. Bu, klavye kullanıcıları için erişilebilirliği artırır.",
avoidNegativeTabIndex: "tabIndex=\"-1\" kullanımı, elementi klavye navigasyonundan çıkarır. Bu, erişilebilirlik sorunlarına neden olabilir.",
ariaAttributes: {
title: "ARIA Attribute'leri",
description: "ARIA attribute'leri, web sayfanızın erişilebilirliğini artırır. Bu attribute'ler, ekran okuyucuların içeriğinizi daha iyi anlamasını sağlar."
},
formLabels: {
title: "Form Label'ları",
description: "Tüm form input'ları için label ekleyin. Bu, kullanıcıların input'ların ne için olduğunu anlamasını sağlar."
},
contrast: {
title: "Kontrast Oranı",
description: "Metin ve arka plan arasında yeterli kontrast oranı sağlayın. Bu, görme zorluğu olan kullanıcılar için önemlidir."
},
keyboardNavigation: {
title: "Klavye Navigasyonu",
description: "Tüm interaktif elementlerin klavye ile erişilebilir olduğundan emin olun. Bu, fare kullanamayan kullanıcılar için önemlidir."
},
accessibilityTests: {
title: "Erişilebilirlik Testleri",
description: "Uygulamanızı düzenli olarak erişilebilirlik testlerine tabi tutun. axe, Lighthouse gibi araçlar kullanabilirsiniz."
}
}
},
visualize: {
title: "SEO Analizi",
summary: "Özet",
totalIssues: "Toplam {totalIssues} SEO sorunu tespit edildi:",
metaTagIssues: "Meta Tag Sorunları",
semanticHtmlIssues: "Semantik HTML Sorunları",
accessibilityIssues: "Erişilebilirlik Sorunları",
detectedIssues: "Tespit Edilen Sorunlar",
file: "Dosya",
issue: "Sorun",
recommendation: "Öneri",
recommendations: "Öneriler"
}
},
"data-fetching": {
name: "data-fetching",
description: "Veri çekme yöntemlerini ve stratejilerini analiz eder",
recommendations: {
serverSideProps: {
withRevalidate: "getServerSideProps ile revalidate kullanmak yerine, getStaticProps kullanmayı düşünün",
withRequestData: "Request bilgilerine ihtiyaç duyduğunuz için getServerSideProps doğru bir seçim",
default: "Eğer veri sık değişmiyorsa, getStaticProps + revalidate (ISR) kullanmayı düşünün"
},
staticProps: {
noRevalidate: "Veri değişebiliyorsa, revalidate ekleyerek ISR (Incremental Static Regeneration) kullanın",
lowRevalidate: "Revalidate değeri çok düşük. Gereksiz yeniden oluşturmaları önlemek için daha yüksek bir değer kullanmayı düşünün",
default: "getStaticProps + revalidate (ISR) iyi bir seçim"
},
staticPaths: {
fallbackFalse: "fallback: false, bilinmeyen path'ler için 404 döndürür. Eğer yeni içerikler ekleniyorsa, fallback: \"blocking\" veya fallback: true kullanmayı düşünün",
fallbackBlocking: "fallback: \"blocking\", iyi bir seçim. Bilinmeyen path'ler için SSR gibi davranır",
fallbackTrue: "fallback: true ile, loading state göstermeyi unutmayın",
default: "getStaticPaths için fallback değeri belirtin"
},
swr: {
noRevalidateOnFocus: "revalidateOnFocus, revalidateOnReconnect gibi seçenekleri belirtin",
noDedupingInterval: "Gereksiz istekleri önlemek için dedupingInterval ekleyin",
default: "SWR iyi bir client-side veri fetching seçimi"
},
reactQuery: {
noStaleTime: "staleTime ve cacheTime değerlerini belirtin",
zeroStaleTime: "staleTime: 0, her render'da yeni veri çeker. Gereksiz istekleri önlemek için daha yüksek bir değer kullanmayı düşünün",
default: "React Query iyi bir client-side veri fetching seçimi"
},
fetch: {
noCache: "fetch isteğine cache stratejisi ekleyin: { cache: \"force-cache\" } veya { cache: \"no-store\" }",
forceCache: "force-cache, statik veriler için iyi bir seçim",
noStore: "no-store, dinamik veriler için iyi bir seçim",
default: "fetch API için uygun cache stratejisi seçin"
},
axios: {
default: "Axios için cache mekanizması eklemek için axios-cache-adapter kullanmayı düşünün"
}
},
issues: {
bothDataFetchingMethods: {
issue: "getServerSideProps ve getStaticProps aynı dosyada kullanılıyor",
recommendation: "Bu iki fonksiyonu aynı dosyada kullanmak yerine, ayrı dosyalara ayırın"
},
staticPropsNoRevalidate: {
issue: "getStaticProps kullanılıyor ama revalidate belirtilmemiş",
recommendation: "ISR (Incremental Static Regeneration) için revalidate ekleyin"
},
fetchNoCache: {
issue: "fetch API kullanılıyor ama cache stratejisi belirtilmemiş",
recommendation: "fetch isteğine cache stratejisi ekleyin: { cache: \"force-cache\" } veya { cache: \"no-store\" }"
}
},
generalRecommendations: {
appRouter: {
title: "App Router için Veri Fetching",
description: "App Router kullanıyorsanız, React Server Components ile veri fetching yapabilirsiniz. Bu, client-side JavaScript'i azaltır ve SEO'yu iyileştirir."
},
clientSide: {
title: "SWR veya React Query Kullanımı",
description: "Client-side veri fetching için SWR veya React Query kullanın. Bu kütüphaneler, caching, revalidation, error handling gibi özellikleri otomatik olarak sağlar."
},
isr: {
title: "Incremental Static Regeneration (ISR)",
description: "Sık değişmeyen veriler için getStaticProps ile ISR kullanın. Bu, statik sayfaların belirli aralıklarla yeniden oluşturulmasını sağlar."
}
},
visualize: {
title: "Veri Fetching Analizi",
methods: {
title: "Veri Fetching Yöntemleri",
serverSideProps: "getServerSideProps",
staticProps: "getStaticProps",
staticPaths: "getStaticPaths",
revalidate: "Revalidate",
fallback: "Fallback",
notSpecified: "Belirtilmemiş",
recommendation: "Öneri"
},
clientSide: {
title: "Client-side Veri Fetching",
swr: "SWR",
reactQuery: "React Query",
fetch: "Fetch API",
axios: "Axios",
revalidateOnFocus: "revalidateOnFocus",
staleTime: "staleTime",
cache: "Cache"
},
cacheStrategies: {
title: "Cache Stratejileri",
issues: {
title: "Tespit Edilen Sorunlar",
noIssues: "Herhangi bir sorun tespit edilmedi. Harika!",
issue: "Sorun"
},
recommendations: {
title: "Genel Öneriler"
}
}
}
},
"code-quality": {
name: "code-quality",
description: "Kod kalitesi ve best practice kontrolü yapar",
types: {
"unused-component": "Kullanılmayan Komponent"
},
visualize: {
title: "Kullanılmayan Komponentler",
noUnusedComponents: "Kullanılmayan komponent bulunamadı."
}
},
routing: {
name: "routing",
description: "Route yapısını analiz eder ve görselleştirir",
visualize: {
title: "Route Analizi",
noRoutes: "Hiç route bulunamadı.",
appRouter: "App Router",
pagesRouter: "Pages Router",
pages: "Sayfalar",
apiRoutes: "API Route'lar",
staticPages: "Statik Sayfalar",
dynamicPages: "Dinamik Sayfalar",
staticApiRoutes: "Statik API Route'lar",
dynamicApiRoutes: "Dinamik API Route'lar",
parameters: "Parametreler"
}
},
history: {
name: "history",
description: "Proje geçmişini ve değişiklikleri analiz eder",
error: {
noGit: "Git deposu bulunamadı. Tarihsel analiz için Git gereklidir."
},
summary: {
title: "Özet",
totalCommits: "Toplam {totalCommits} commit incelendi, {analyzedCommits} commit analiz edildi.",
firstCommitDate: "İlk commit tarihi: {date}",
lastCommitDate: "Son commit tarihi: {date}"
},
commitHistory: {
title: "Commit Geçmişi",
moreCommits: "... ve {count} commit daha"
},
metricChanges: {
title: "Metrik Değişimleri",
metrics: {
componentCount: "Toplam Komponent Sayısı",
serverComponentCount: "Server Komponent Sayısı",
clientComponentCount: "Client Komponent Sayısı",
routeCount: "Toplam Route Sayısı",
apiRouteCount: "API Route Sayısı",
pageRouteCount: "Sayfa Route Sayısı",
dynamicRouteCount: "Dinamik Route Sayısı",
staticRouteCount: "Statik Route Sayısı"
},
trend: "Trend",
firstValue: "İlk değer",
lastValue: "Son değer",
totalGrowth: "Toplam büyüme",
growthRate: "Büyüme hızı",
perCommit: "/ commit",
changeDetails: "Değişim Detayları"
},
trends: {
rapidGrowth: "Hızlı Büyüme",
steadyGrowth: "Düzenli Büyüme",
stable: "Stabil",
steadyDecline: "Düzenli Azalma",
rapidDecline: "Hızlı Azalma",
unknown: "Bilinmiyor"
},
visualize: {
title: "Zaman İçinde Değişim Analizi",
chartTitle: "{metricName} Değişimi"
}
},
visualization: {
name: "visualization",
description: "Analiz sonuçlarını interaktif grafiklerle görselleştirir",
summary: {
title: "Özet",
totalModules: "Toplam {totalModules} modül",
totalIssues: "Toplam {totalIssues} sorun tespit edildi"
},
charts: {
moduleIssues: {
title: "Modül Başına Sorun Sayıları",
issueCount: "Sorun Sayısı"
},
issueTypes: {
title: "Sorun Türü Dağılımı"
},
severityDistribution: {
title: "Önem Derecesi Dağılımı"
}
},
filtering: {
title: "Filtreleme",
module: "Modül:",
issueType: "Sorun Türü:",
severity: "Önem Derecesi:",
file: "Dosya:",
all: "Tümü",
applyFilter: "Filtrele",
instructions: "Filtreleme yapmak için yukarıdaki seçenekleri kullanın.",
results: {
title: "Filtreleme Sonuçları",
loading: "Filtreleme sonuçları yükleniyor...",
module: "Modül:",
issueType: "Sorun Türü:",
severity: "Önem Derecesi:",
file: "Dosya:",
message: "Bu filtreleme kriterlerine göre sonuçlar burada gösterilecektir."
}
},
issueTypes: {
serverComponent: "Server Component",
clientComponent: "Client Component",
unusedComponent: "Kullanılmayan Komponent",
dynamicRoute: "Dinamik Route",
nonOptimizedImage: "Optimize Edilmemiş Görüntü",
largeComponent: "Büyük Komponent",
largeImport: "Büyük Kütüphane Import'u",
cacheStrategyIssue: "Cache Stratejisi Sorunu",
serverSecurityIssue: "Server Güvenlik Sorunu",
apiSecurityIssue: "API Güvenlik Sorunu",
generalSecurityIssue: "Genel Güvenlik Sorunu",
metaTagIssue: "Meta Tag Sorunu",
semanticHtmlIssue: "Semantik HTML Sorunu",
accessibilityIssue: "Erişilebilirlik Sorunu"
},
visualize: {
title: "Gelişmiş Görselleştirme",
summary: "Özet",
moduleIssues: "Modül Başına Sorun Sayıları",
issueTypeDistribution: "Sorun Türü Dağılımı",
severityDistribution: "Önem Derecesi Dağılımı",
filterOptions: "Filtreleme Seçenekleri",
modules: "Modüller",
issueTypes: "Sorun Türleri",
severities: "Önem Dereceleri",
files: "Dosyalar",
andMore: "... ve {count} dosya daha"
}
}
}
};