Enter two usernames to compare
-- Compare GitHub developer metrics side by side -
+{t("page.empty.title")}
+{t("page.empty.description")}
{(data.score ?? 0).toFixed(2)}
-{t('comparsion.score')}
++ {t("comparsion.score")} +
- {t('topwork.toprepos')}
+
+ {t("topwork.toprepos")}
{user.topRepos.slice(0, 3).map((repo, i) =>
cardDetails({
key: `repo-${i}`,
- title: repo.name || t('untitled'),
+ title: repo.name || t("untitled"),
titleUrl: repo.name
? `https://github.com/${user.username}/${repo.name}`
: undefined,
@@ -105,64 +106,63 @@ export function TopList({ userResults }: Props) {
{
icon: ,
label: repo.stars,
- tooltip: `${repo.stars} ${t('topwork.stars')}`,
+ tooltip: `${repo.stars} ${t("topwork.stars")}`,
},
{
icon: ,
label: repo.forks,
- tooltip: `${repo.forks} ${t('topwork.forks')}`,
+ tooltip: `${repo.forks} ${t("topwork.forks")}`,
},
{
icon: ,
label: repo.watchers,
- tooltip: `${repo.watchers} ${t('topwork.watchers')}`,
+ tooltip: `${repo.watchers} ${t("topwork.watchers")}`,
},
],
}),
)}
{user.topRepos.length === 0 && (
- {t('topwork.norepos')}
+ {t("topwork.noRepos")}
)}
- {t('topwork.norepos')} + {t("topwork.noRepos")}
)}
- {t('topwork.topprs')}
+
+ {t("topwork.topprs")}
{user.topPullRequests.slice(0, 3).map((pr, i) =>
cardDetails({
key: `pr-${i}`,
- title: pr.title || t('untitled'),
+ title: pr.title || t("untitled"),
titleUrl: pr.url,
- subtitle: `in ${pr.repo}`,
+ subtitle: t("topwork.inRepo", { repo: pr.repo || "" }),
score: pr.score,
badges: [
{
icon: ,
label: pr.stars,
- tooltip: `${pr.stars} ${t('topwork.pr.repo.stars')}`,
+ tooltip: `${pr.stars} ${t("topwork.pr.repo.stars")}`,
},
-
{
icon: ,
label: pr.additions || "0",
- tooltip: `+${pr.additions || 0} ${t('topwork.pr.additions')}`,
+ tooltip: `+${pr.additions || 0} ${t("topwork.pr.additions")}`,
},
{
icon: ,
label: pr.deletions || "0",
- tooltip: `-${pr.deletions || 0} ${t('topwork.pr.deletions')}`,
+ tooltip: `-${pr.deletions || 0} ${t("topwork.pr.deletions")}`,
},
],
}),
)}
{user.topPullRequests.length === 0 && (
- {t('topwork.noPRs')}
+ {t("topwork.noPRs")}
)}
diff --git a/locales/ar.json b/locales/ar.json
index 6c8f967..7c67016 100644
--- a/locales/ar.json
+++ b/locales/ar.json
@@ -1,55 +1,73 @@
{
- "app.subtitle": "قارن بين مطورين",
- "app.title": "قارن بين مطوري الجيتهب (GitHub)",
- "banner.leadby": "متقدم بـ",
- "banner.metric": "المقاييس",
- "banner.tie": "تعادل — كلا المطورين متساويان في الأداء.",
+ "app.subtitle": "قارن بين مطورين جنبًا إلى جنب",
+ "app.title": "قارن مطوري GitHub",
+ "banner.leadby": "يتقدم بنسبة",
+ "banner.metric": "النتيجة",
+ "banner.tie": "النتيجة متعادلة. أداء المطورين متقارب.",
"banner.winner": "الفائز",
- "barchart.desc": "تحليل بصري للمقاييس الرئيسية",
- "barchart.title": "مقارنة الأدء",
- "breakdown.contribution": "نقاط المساهمات (Contributions)",
- "breakdown.description": "أشرطة تقدم تظهر الأداء النسبي",
- "breakdown.pr": "نقاط طلبات الدمج (PRs)",
- "breakdown.repo": "نقاط المشاريع (Repos)",
- "breakdown.title": "مقارنة تفصيلية",
- "comparsion.activity.score": "نقاط النشاط (Activity)",
- "comparsion.contribution.diff": "فرق المساهمات",
- "comparsion.contribution.score": "نقاط المساهمات (Contributions)",
- "comparsion.diff": "فارق التقييم",
- "comparsion.final.score": "النتيجة النهائية",
- "comparsion.pr.diff": "فرق طلبات الدمج",
- "comparsion.pr.score": "نقاط طلبات الدمج (PRs)",
- "comparsion.repo.diff": "فرق المشاريع",
- "comparsion.repo.score": "نقاط المشاريع (Repos)",
- "comparsion.score": "التقييم",
- "error.generic": "فشل في جلب البيانات",
+ "barchart.desc": "عرض مرئي لأهم المقاييس",
+ "barchart.title": "مقارنة الدرجات",
+ "breakdown.contribution": "درجة المساهمات",
+ "breakdown.description": "أشرطة تقدم توضح الأداء النسبي",
+ "breakdown.pr": "درجة طلبات السحب",
+ "breakdown.repo": "درجة المستودعات",
+ "breakdown.title": "تفصيل الدرجات",
+ "comparison.avatarAlt": "الصورة الرمزية لـ{name}",
+ "comparsion.activity.score": "درجة النشاط",
+ "comparsion.contribution.diff": "فارق المساهمات",
+ "comparsion.contribution.score": "درجة المساهمات",
+ "comparsion.diff": "فارق الدرجات",
+ "comparsion.final.score": "الدرجة النهائية",
+ "comparsion.pr.diff": "فارق طلبات السحب",
+ "comparsion.pr.score": "درجة طلبات السحب",
+ "comparsion.repo.diff": "فارق المستودعات",
+ "comparsion.repo.score": "درجة المستودعات",
+ "comparsion.score": "الدرجة",
+ "error.calculateFailed": "تعذر حساب النتيجة",
+ "error.comparisonFailed": "فشلت المقارنة",
+ "error.fetchFailed": "تعذر جلب البيانات",
+ "error.generic": "تعذر جلب البيانات",
+ "error.missingUsername": "أدخل اسم مستخدم واحدًا على الأقل.",
+ "error.userNotFound": "لم يتم العثور على مستخدم GitHub",
+ "footer.description": "قارن مقاييس مطوري GitHub جنبًا إلى جنب مع رؤية أوضح للنشاط والاستمرارية والأثر العام.",
+ "footer.eyebrow": "مقارنة المطورين",
+ "footer.note": "مصمم لمراجعات احترافية سريعة جنبًا إلى جنب عندما تحتاج إلى إشارة أوضح من تصفح الملفات الشخصية فقط.",
+ "footer.summary": "قارن مقاييس مطوري GitHub",
+ "footer.tag": "مقاييس GitHub",
+ "footer.tagline": "رؤية أوضح. تقييم أسرع.",
"form.compare": "قارن",
"form.compare.ing": "جارٍ المقارنة...",
- "form.enterTwo": "أدخل اسم مستخدمين من GitHub لمقارنة مقاييسهم كمطورين",
+ "form.enterTwo": "أدخل اسمي مستخدم على GitHub لمقارنة مقاييسهما",
"form.reset": "إعادة تعيين",
- "form.swap": "تبديل",
- "form.username1": "اسم المستخدم 1 (مثال: torvalds)",
- "form.username2": "اسم المستخدم 2 (مثال: octocat)",
- "insights.equal.contribution": "كلا المطورين لديهم مستويات مساهمة متشابهة",
- "insights.equal.pr": "كلا المطورين لديهم تأثير طلبات الدمج متساوي",
- "insights.equal.repo": "كلا المطورين لديهم قوة مشاريع متساوية",
- "insights.higher.contribution": "يُظهر نشاطاً أكثر في المساهمات",
- "insights.pull.leads": "يتفوق في تأثير طلبات الدمج بـ",
- "insights.stronger.contribution": "لديه مساهمات عامة أقوى بـ",
- "insights.stronger.pr": "لديه تأثير أقوى في طلبات الدمج بـ",
- "insights.stronger.repo": "لديه مشاريع أقوى بـ",
- "insights.title": "أهم الملاحظات",
- "topwork.desc": "المشاريع والإسهامات الأكثر تأثيراً",
- "topwork.forks": "استنساخات",
- "topwork.noPRs": "لم يتم العثور على طلبات دمج",
- "topwork.noRepos": "لم يتم العثور على مشاريع",
- "topwork.pr.additions": "الإضافات",
- "topwork.pr.deletions": "الحذف",
- "topwork.pr.repo.stars": "النجوم في مستودع الطلب",
- "topwork.stars": "إعجابات",
- "topwork.title": "أفضل الأعمال",
- "topwork.topprs": "طلبات الدمج",
- "topwork.toprepos": "المشاريع",
- "topwork.watchers": "متابعون",
+ "form.swap": "تبديل المستخدمين",
+ "form.username1": "اسم المستخدم الأول (مثل torvalds)",
+ "form.username2": "اسم المستخدم الثاني (مثل octocat)",
+ "insights.contribution.leader": "{username} يظهر نشاطًا أعلى في المساهمات",
+ "insights.equal.contribution": "كلا المطورين متقاربان في مستوى المساهمات",
+ "insights.equal.pr": "كلا المطورين متساويان في تأثير طلبات السحب",
+ "insights.equal.repo": "كلا المطورين متقاربان في قوة المستودعات",
+ "insights.pr.leader": "{username} يتقدم في تأثير طلبات السحب بنتيجة {score} مقابل {other}",
+ "insights.repo.leader": "{username} يمتلك محفظة مستودعات أقوى بنتيجة {score} مقابل {other}",
+ "insights.title": "أبرز الملاحظات",
+ "page.empty.description": "قارن مقاييس مطوري GitHub جنبًا إلى جنب",
+ "page.empty.title": "أدخل اسمي مستخدم للمقارنة",
+ "results.copied": "تم النسخ!",
+ "results.copy": "نسخ النتيجة",
+ "results.copyAria": "انسخ نتائج المقارنة إلى الحافظة",
+ "theme.toggle": "تبديل وضع الألوان",
+ "topwork.desc": "أكثر المستودعات وطلبات السحب تأثيرًا",
+ "topwork.forks": "تفرعات",
+ "topwork.inRepo": "في {repo}",
+ "topwork.noPRs": "لا توجد طلبات سحب",
+ "topwork.noRepos": "لا توجد مستودعات",
+ "topwork.pr.additions": "إضافات",
+ "topwork.pr.deletions": "حذوفات",
+ "topwork.pr.repo.stars": "نجوم على مستودع طلب السحب",
+ "topwork.stars": "نجوم",
+ "topwork.title": "أبرز الأعمال",
+ "topwork.titleForUser": "أبرز الأعمال - {username}",
+ "topwork.topprs": "أفضل طلبات السحب",
+ "topwork.toprepos": "أفضل المستودعات",
+ "topwork.watchers": "مراقبون",
"untitled": "بدون عنوان"
-}
\ No newline at end of file
+}
diff --git a/locales/en.json b/locales/en.json
index b279b22..00b567f 100644
--- a/locales/en.json
+++ b/locales/en.json
@@ -1,9 +1,9 @@
{
- "app.subtitle": "Compare two developers",
+ "app.subtitle": "Evaluate two developers side by side",
"app.title": "Compare GitHub Developers",
- "banner.leadby": "Lead by",
- "banner.metric": "Metric",
- "banner.tie": "It's a tie — both developers are evenly matched.",
+ "banner.leadby": "Leads by",
+ "banner.metric": "Result",
+ "banner.tie": "It's a tie. Both developers are evenly matched.",
"banner.winner": "Winner",
"barchart.desc": "Visual breakdown of key metrics",
"barchart.title": "Score Comparison",
@@ -12,17 +12,29 @@
"breakdown.pr": "Pull Request Score",
"breakdown.repo": "Repository Score",
"breakdown.title": "Detailed Breakdown",
+ "comparison.avatarAlt": "{name}'s avatar",
"comparsion.activity.score": "Activity Score",
- "comparsion.contribution.diff": "Contribution diff",
+ "comparsion.contribution.diff": "Contribution Difference",
"comparsion.contribution.score": "Contribution Score",
"comparsion.diff": "Score Difference",
"comparsion.final.score": "Final Score",
- "comparsion.pr.diff": "PR diff",
+ "comparsion.pr.diff": "PR Difference",
"comparsion.pr.score": "PR Score",
- "comparsion.repo.diff": "Repo diff",
- "comparsion.repo.score": "Repo Score",
+ "comparsion.repo.diff": "Repository Difference",
+ "comparsion.repo.score": "Repository Score",
"comparsion.score": "Score",
+ "error.calculateFailed": "Failed to calculate score",
+ "error.comparisonFailed": "Comparison failed",
+ "error.fetchFailed": "Failed to fetch",
"error.generic": "Failed to fetch",
+ "error.missingUsername": "Provide at least one username.",
+ "error.userNotFound": "GitHub user not found",
+ "footer.description": "Compare GitHub developer metrics side by side with a clearer view of activity, consistency, and overall impact.",
+ "footer.eyebrow": "Developer Comparison",
+ "footer.note": "Built for quick, professional side-by-side reviews when you need a cleaner signal than raw profile browsing.",
+ "footer.summary": "Compare GitHub developer metrics",
+ "footer.tag": "GitHub Metrics",
+ "footer.tagline": "Sharper insights. Faster evaluation.",
"form.compare": "Compare",
"form.compare.ing": "Comparing...",
"form.enterTwo": "Enter two GitHub usernames to compare their developer metrics",
@@ -30,27 +42,32 @@
"form.swap": "Swap users",
"form.username1": "Username 1 (e.g., torvalds)",
"form.username2": "Username 2 (e.g., octocat)",
+ "insights.contribution.leader": "{username} shows higher contribution activity",
"insights.equal.contribution": "Both developers have similar contribution levels",
"insights.equal.pr": "Both developers have equal pull request impact",
- "insights.equal.repo": "Both developers have equal repository strength",
- "insights.higher.contribution": "shows higher contribution activity",
- "insights.pull.leads": "leads in pull request impact",
- "insights.stronger.contribution": "has stronger overall contribution with",
- "insights.stronger.pr": "has stronger pull request impact with",
- "insights.stronger.repo": "has stronger repository portfolio with",
+ "insights.equal.repo": "Both developers have similar repository strength",
+ "insights.pr.leader": "{username} leads in pull request impact with {score} vs {other}",
+ "insights.repo.leader": "{username} has a stronger repository portfolio with {score} vs {other}",
"insights.title": "Key Insights",
- "toggle.direction": "Toggle direction ({dir})",
+ "page.empty.description": "Compare GitHub developer metrics side by side",
+ "page.empty.title": "Enter two usernames to compare",
+ "results.copied": "Copied!",
+ "results.copy": "Copy Result",
+ "results.copyAria": "Copy comparison results to clipboard",
+ "theme.toggle": "Toggle color mode",
"topwork.desc": "Most impactful repositories and pull requests",
"topwork.forks": "forks",
+ "topwork.inRepo": "in {repo}",
"topwork.noPRs": "No pull requests found",
"topwork.noRepos": "No repositories found",
"topwork.pr.additions": "additions",
"topwork.pr.deletions": "deletions",
- "topwork.pr.repo.stars": "stars on the PR's repository",
+ "topwork.pr.repo.stars": "stars on the PR repository",
"topwork.stars": "stars",
"topwork.title": "Top Work",
+ "topwork.titleForUser": "Top Work - {username}",
"topwork.topprs": "Top Pull Requests",
"topwork.toprepos": "Top Repositories",
"topwork.watchers": "watchers",
"untitled": "Untitled"
-}
\ No newline at end of file
+}
diff --git a/public/logo.svg b/public/logo.svg
new file mode 100644
index 0000000..842fb05
--- /dev/null
+++ b/public/logo.svg
@@ -0,0 +1,46 @@
+
+
- {t('topwork.noPRs')} + {t("topwork.noPRs")}
)}