feat(i18n): 100% complete bilingual parity, safe tab switching and zero-crash clipboard copy

This commit is contained in:
2026-09-10 23:09:31 +00:00
parent 8984c3fb5f
commit 3546544da8
+97 -66
View File
@@ -137,13 +137,13 @@
<header role="banner">
<a href="/" class="logo" aria-label="Aura Agentic AI Home">
<span>🚀 Aura Agentic AI</span>
<span class="logo-badge" data-i18n="header_badge">MCP Bangladesh v2.4</span>
<span class="logo-badge" data-i18n="header_badge">এমসিপি বাংলাদেশ v2.4</span>
</a>
<div class="header-right">
<nav class="nav-links" aria-label="Quick Links">
<a href="https://glama.ai/mcp/servers/auraajenticai/aura-courier-mcp" target="_blank" rel="noopener" data-i18n="nav_glama">Glama Registry ↗</a>
<a href="https://github.com/auraajenticai/courier-mcp-site" target="_blank" rel="noopener" data-i18n="nav_github">GitHub ↗</a>
<a href="https://client.auraajenticai.cloud" target="_blank" rel="noopener" data-i18n="nav_client">Client Portal ↗</a>
<a href="https://glama.ai/mcp/servers/auraajenticai/aura-courier-mcp" target="_blank" rel="noopener" data-i18n="nav_glama">গ্লামা রেজিস্ট্রি ↗</a>
<a href="https://github.com/auraajenticai/courier-mcp-site" target="_blank" rel="noopener" data-i18n="nav_github">গিটহাব ↗</a>
<a href="https://client.auraajenticai.cloud" target="_blank" rel="noopener" data-i18n="nav_client">ক্লায়েন্ট পোর্টাল ↗</a>
<a href="/health" target="_blank" class="mono" style="color:var(--green)">/health ↗</a>
</nav>
<!-- Dual Language Switcher -->
@@ -158,8 +158,8 @@
<!-- HERO -->
<section class="hero" aria-labelledby="hero-title">
<div class="badge-row">
<div class="badge-glama" data-i18n="badge_glama">✓ Verified on Glama.ai Registry</div>
<div class="badge-live"><span class="d"></span> <span data-i18n="badge_couriers">4 Couriers + Google Maps Live</span></div>
<div class="badge-glama" data-i18n="badge_glama">✓ Glama.ai রেজিস্টিতে ভেরিফাইড</div>
<div class="badge-live"><span class="d"></span> <span data-i18n="badge_couriers">৪টি কুরিয়ার + গুগল ম্যাপস লাইভ</span></div>
<div class="badge-version">⚡ Streamable-HTTP v2024-11-05</div>
</div>
@@ -168,20 +168,20 @@
<div class="cta-row">
<a href="https://glama.ai/mcp/servers/auraajenticai/aura-courier-mcp" target="_blank" rel="noopener" class="btn btn-glama">
<span data-i18n="cta_glama">⚡ View on Glama.ai</span>
<span data-i18n="cta_glama">⚡ Glama.ai-তে দেখুন</span>
</a>
<a href="https://github.com/auraajenticai/courier-mcp-site" target="_blank" rel="noopener" class="btn btn-ghost">
<span data-i18n="cta_github">★ View on GitHub</span>
<span data-i18n="cta_github">★ GitHub-এ দেখুন</span>
</a>
<a href="https://courier.auraajenticai.cloud/mcp" target="_blank" rel="noopener" class="btn btn-primary">
<span data-i18n="cta_mcp">Connect MCP Endpoint ↗</span>
<span data-i18n="cta_mcp">MCP এন্ডপয়েন্ট কানেক্ট করুন ↗</span>
</a>
</div>
<div class="hero-meta">
<span><b data-i18n="meta_tools_count">9</b> <span data-i18n="meta_tools">enterprise tools</span></span>
<span><b data-i18n="meta_couriers_count">4</b> <span data-i18n="meta_couriers">couriers + Google Maps</span></span>
<span data-i18n="meta_risk">Zero-Risk COD · Fraud AI</span>
<span><b data-i18n="meta_tools_count">৯টি</b> <span data-i18n="meta_tools">এন্টারপ্রাইজ টুলস</span></span>
<span><b data-i18n="meta_couriers_count">৪টি</b> <span data-i18n="meta_couriers">কুরিয়ার + গুগল ম্যাপস</span></span>
<span data-i18n="meta_risk">জিরো-রিস্ক সিওডি · ফ্রড এআই</span>
<span>Apache License 2.0</span>
</div>
</section>
@@ -189,7 +189,7 @@
<!-- 4 MAJOR COURIERS OF BANGLADESH -->
<section class="blk" aria-labelledby="courier-title">
<div class="blk-head">
<div class="eyebrow" data-i18n="courier_eyebrow">// SUPPORTED CARRIERS</div>
<div class="eyebrow" data-i18n="courier_eyebrow">// সমর্থিত কুরিয়ার নেটওয়ার্ক</div>
<h2 id="courier-title" data-i18n="courier_heading">বাংলাদেশের ৪টি শীর্ষস্থানীয় কুরিয়ার</h2>
<p data-i18n="courier_subtitle">একই সর্বজনীন ইন্টারফেসে দেশের বৃহত্তম ৪টি লজিস্টিকস নেটওয়ার্ক — সমান গুরুত্ব ও পূর্ণ কার্যক্ষমতায় সক্রিয়।</p>
</div>
@@ -243,7 +243,7 @@
<!-- Dedicated Spatial Engine Banner -->
<div class="spatial-box">
<div class="spatial-left">
<h3 data-i18n="spatial_title">📍 Google Maps Platform — Spatial Routing Engine</h3>
<h3 data-i18n="spatial_title">📍 Google Maps Platform — স্পেশিয়াল রাউটিং ইঞ্জিন</h3>
<p data-i18n="spatial_desc">Geocoding API, Routes API v2 ও রুটপ-লেভেল কোঅর্ডিনেট দিয়ে নিখুঁত থানা/জেলা রেজোলিউশন ও রিয়েল-টাইম দূরত্ব পরিমাপ।</p>
</div>
<span class="badge-spatial" data-i18n="spatial_badge">● Enterprise Spatial AI</span>
@@ -254,19 +254,19 @@
<section class="blk" style="padding:28px 0;">
<div class="health-box" aria-label="Server Telemetry">
<div class="health-item">
<h4 data-i18n="health_status_title">Engine Status</h4>
<span style="color:var(--green)" data-i18n="health_status_val">● Operational</span>
<h4 data-i18n="health_status_title">ইঞ্জিন স্ট্যাটাস</h4>
<span style="color:var(--green)" data-i18n="health_status_val">● চলমান (Operational)</span>
</div>
<div class="health-item">
<h4 data-i18n="health_proto_title">Protocol</h4>
<h4 data-i18n="health_proto_title">প্রোটোকল</h4>
<span>Streamable-HTTP 2024-11-05</span>
</div>
<div class="health-item">
<h4 data-i18n="health_tools_title">Registered Tools</h4>
<span data-i18n="health_tools_val">9 Production Tools</span>
<h4 data-i18n="health_tools_title">নিবন্ধিত টুলস</h4>
<span data-i18n="health_tools_val">৯টি প্রোডাকশন টুলস</span>
</div>
<div class="health-item">
<h4 data-i18n="health_wh_title">Active Webhooks</h4>
<h4 data-i18n="health_wh_title">সক্রিয় ওয়েব-হুক</h4>
<span>Steadfast, Pathao, RedX, Paperfly</span>
</div>
</div>
@@ -275,8 +275,8 @@
<!-- 9 ENTERPRISE TOOLS -->
<section class="blk" aria-labelledby="tools-title">
<div class="blk-head">
<div class="eyebrow" data-i18n="tools_eyebrow">// ENTERPRISE TOOLS</div>
<h2 id="tools-title" data-i18n="tools_heading">One Interface, Every Courier & Spatial Capability</h2>
<div class="eyebrow" data-i18n="tools_eyebrow">// এন্টারপ্রাইজ টুলস</div>
<h2 id="tools-title" data-i18n="tools_heading">একটি একক ইন্টারফেসে সকল কুরিয়ার ও স্পেশিয়াল ক্ষমতা</h2>
<p data-i18n="tools_subtitle">প্রতিটা courier আলাদা API ও কাঠামোর — Aura Courier MCP সবগুলোকে একই সর্বজনীন ও নির্ভরযোগ্য toolset-এ নিয়ে এসেছে। আপনার AI Agent-কে নির্দেশ দিন, বাকি জটিল হিসাব ও ডিসপ্যাচ ও সামলে নেবে।</p>
</div>
@@ -358,7 +358,7 @@
<!-- REAL-TIME WEBHOOK RECEIVERS FOR ALL 4 COURIERS -->
<section class="blk" aria-labelledby="webhook-title">
<div class="blk-head">
<div class="eyebrow" data-i18n="wh_eyebrow">// REAL-TIME WEBHOOKS</div>
<div class="eyebrow" data-i18n="wh_eyebrow">// রিয়েল-টাইম ওয়েব-হুক</div>
<h2 id="webhook-title" data-i18n="wh_heading">৪টি কুরিয়ারেরই রিয়েল-টাইম অটোমেশন ও ইভেন্ট রিসিভার</h2>
<p data-i18n="wh_subtitle">যেকোনো কুরিয়ারে ডেলিভারি স্ট্যাটাস পরিবর্তন হওয়া মাত্রই Aura Courier MCP-তে তাৎক্ষণিক সিঙ্ক হয়।</p>
</div>
@@ -401,14 +401,14 @@
<!-- CONNECT MULTI-CLIENT TABS -->
<section class="blk" aria-labelledby="connect-title">
<div class="blk-head">
<div class="eyebrow" data-i18n="connect_eyebrow">// CONNECT</div>
<div class="eyebrow" data-i18n="connect_eyebrow">// কানেক্ট করুন</div>
<h2 id="connect-title" data-i18n="connect_heading">যুক্ত করুন যেকোনো ক্লায়েন্টে</h2>
<p data-i18n="connect_subtitle">Hosted Streamable-HTTP URL বা লোকাল কনফিগারেশন — ৪টি কুরিয়ার ও Google Maps সহ আপনার প্ল্যাটফর্মের পূর্ণাঙ্গ কনফিগ কপি করুন।</p>
</div>
<div class="config-box">
<div class="tab-header" role="tablist">
<button class="tab-btn active" role="tab" aria-selected="true" onclick="switchTab('antigravity')">
<button class="tab-btn active" role="tab" aria-selected="true" onclick="switchTab('antigravity', this)">
<span class="tab-icon">
<svg width="17" height="17" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M11.04 19.32Q12 21.51 12 24q0-2.49.93-4.68.96-2.19 2.58-3.81t3.81-2.55Q21.51 12 24 12q-2.49 0-4.68-.93a12.3 12.3 0 0 1-3.81-2.58 12.3 12.3 0 0 1-2.58-3.81Q12 2.49 12 0q0 2.49-.96 4.68-.93 2.19-2.55 3.81a12.3 12.3 0 0 1-3.81 2.58Q2.49 12 0 12q2.49 0 4.68.96 2.19.93 3.81 2.55t2.55 3.81" fill="url(#gemini-sparkle-tab)"/>
@@ -423,7 +423,7 @@
</span>
<span>Antigravity / Gemini</span>
</button>
<button class="tab-btn" role="tab" aria-selected="false" onclick="switchTab('hosted')">
<button class="tab-btn" role="tab" aria-selected="false" onclick="switchTab('hosted', this)">
<span class="tab-icon">
<svg width="17" height="17" viewBox="0 0 24 24" fill="none" stroke="#38bdf8" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg">
<circle cx="12" cy="12" r="10"/>
@@ -433,7 +433,7 @@
</span>
<span>Hosted URL (Streamable-HTTP)</span>
</button>
<button class="tab-btn" role="tab" aria-selected="false" onclick="switchTab('claude')">
<button class="tab-btn" role="tab" aria-selected="false" onclick="switchTab('claude', this)">
<span class="tab-icon">
<svg width="17" height="17" fill="#D97757" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
<path d="m4.7144 15.9555 4.7174-2.6471.079-.2307-.079-.1275h-.2307l-.7893-.0486-2.6956-.0729-2.3375-.0971-2.2646-.1214-.5707-.1215-.5343-.7042.0546-.3522.4797-.3218.686.0608 1.5179.1032 2.2767.1578 1.6514.0972 2.4468.255h.3886l.0546-.1579-.1336-.0971-.1032-.0972L6.973 9.8356l-2.55-1.6879-1.3356-.9714-.7225-.4918-.3643-.4614-.1578-1.0078.6557-.7225.8803.0607.2246.0607.8925.686 1.9064 1.4754 2.4893 1.8336.3643.3035.1457-.1032.0182-.0728-.164-.2733-1.3539-2.4467-1.445-2.4893-.6435-1.032-.17-.6194c-.0607-.255-.1032-.4674-.1032-.7285L6.287.1335 6.6997 0l.9957.1336.419.3642.6192 1.4147 1.0018 2.2282 1.5543 3.0296.4553.8985.2429.8318.091.255h.1579v-.1457l.1275-1.706.2368-2.0947.2307-2.6957.0789-.7589.3764-.9107.7468-.4918.5828.2793.4797.686-.0668.4433-.2853 1.8517-.5586 2.9021-.3643 1.9429h.2125l.2429-.2429.9835-1.3053 1.6514-2.0643.7286-.8196.85-.9046.5464-.4311h1.0321l.759 1.1293-.34 1.1657-1.0625 1.3478-.8804 1.1414-1.2628 1.7-.7893 1.36.0729.1093.1882-.0183 2.8535-.607 1.5421-.2794 1.8396-.3157.8318.3886.091.3946-.3278.8075-1.967.4857-2.3072.4614-3.4364.8136-.0425.0304.0486.0607 1.5482.1457.6618.0364h1.621l3.0175.2247.7892.522.4736.6376-.079.4857-1.2142.6193-1.6393-.3886-3.825-.9107-1.3113-.3279h-.1822v.1093l1.0929 1.0686 2.0035 1.8092 2.5075 2.3314.1275.5768-.3218.4554-.34-.0486-2.2039-1.6575-.85-.7468-1.9246-1.621h-.1275v.17l.4432.6496 2.3436 3.5214.1214 1.0807-.17.3521-.6071.2125-.6679-.1214-1.3721-1.9246L14.38 17.959l-1.1414-1.9428-.1397.079-.674 7.2552-.3156.3703-.7286.2793-.6071-.4614-.3218-.7468.3218-1.4753.3886-1.9246.3157-1.53.2853-1.9004.17-.6314-.0121-.0425-.1397.0182-1.4328 1.9672-2.1796 2.9446-1.7243 1.8456-.4128.164-.7164-.3704.0667-.6618.4008-.5889 2.386-3.0357 1.4389-1.882.929-1.0868-.0062-.1579h-.0546l-6.3385 4.1164-1.1293.1457-.4857-.4554.0608-.7467.2307-.2429 1.9064-1.3114Z"/>
@@ -441,7 +441,7 @@
</span>
<span>Claude Desktop</span>
</button>
<button class="tab-btn" role="tab" aria-selected="false" onclick="switchTab('cursor')">
<button class="tab-btn" role="tab" aria-selected="false" onclick="switchTab('cursor', this)">
<span class="tab-icon">
<svg width="17" height="17" viewBox="0 0 466.73 532.09" fill="#edecec" xmlns="http://www.w3.org/2000/svg">
<path d="M457.43,125.94L244.42,2.96c-6.84-3.95-15.28-3.95-22.12,0L9.3,125.94c-5.75,3.32-9.3,9.46-9.3,16.11v247.99c0,6.65,3.55,12.79,9.3,16.11l213.01,122.98c6.84,3.95,15.28,3.95,22.12,0l213.01-122.98c5.75-3.32,9.3-9.46,9.3-16.11v-247.99c0-6.65-3.55-12.79-9.3-16.11h-.01ZM444.05,151.99l-205.63,356.16c-1.39,2.4-5.06,1.42-5.06-1.36v-233.21c0-4.66-2.49-8.97-6.53-11.31L24.87,145.67c-2.4-1.39-1.42-5.06,1.36-5.06h411.26c5.84,0,9.49,6.33,6.57,11.39h-.01Z"/>
@@ -452,7 +452,7 @@
</div>
<div class="code-wrapper">
<button class="copy-btn" onclick="copyCode()" aria-label="Copy Configuration Code" data-i18n="copy_btn">Copy Config</button>
<button class="copy-btn" onclick="copyCode()" aria-label="Copy Configuration Code" data-i18n="copy_btn">কনফিগ কপি করুন</button>
<pre id="code-snippet" class="code-body" tabindex="0">{
"mcpServers": {
"aura-courier": {
@@ -481,7 +481,7 @@
<!-- THE VISION -->
<section class="blk" aria-labelledby="vision-title">
<div class="vision-box">
<div class="eyebrow" style="color:var(--cyan); margin-bottom:8px;" data-i18n="vision_eyebrow">THE VISION</div>
<div class="eyebrow" style="color:var(--cyan); margin-bottom:8px;" data-i18n="vision_eyebrow">// আমাদের ভিশন</div>
<h3 id="vision-title" data-i18n="vision_heading">এক ছাদের নিচে দেশের সব commerce API</h3>
<p data-i18n="vision_desc">Aura বানাচ্ছে বাংলাদেশের agentic commerce স্তর — courier, payments, spatial intelligence এবং আরও অনেক connector — যাতে যেকোনো AI স্বয়ংক্রিয়ভাবে ও বিশ্বমানের নির্ভুলতায় দেশের যেকোনো ব্যবসার অপারেশন পরিচালনা করতে পারে। মানুষের স্বপ্ন · এআই-এর হাত।</p>
</div>
@@ -503,22 +503,22 @@
<script>
const i18n = {
bn: {
header_badge: "MCP Bangladesh v2.4",
nav_glama: "Glama Registry ↗",
nav_github: "GitHub ↗",
nav_client: "Client Portal ↗",
badge_glama: "✓ Verified on Glama.ai Registry",
header_badge: "এমসিপি বাংলাদেশ v2.4",
nav_glama: "গ্লামা রেজিস্ট্রি ↗",
nav_github: "গিটহাব ↗",
nav_client: "ক্লায়েন্ট পোর্টাল ↗",
badge_glama: "✓ Glama.ai রেজিস্টিতে ভেরিফাইড",
badge_couriers: "৪টি কুরিয়ার + গুগল ম্যাপস লাইভ",
hero_tagline: "এক connector — বাংলাদেশের সব courier ও spatial intelligence। Claude, Antigravity, Cursor এবং n8n AI Agents থেকে ১-ক্লিকে parcel বুক করুন, ট্র্যাক করুন এবং জিরো-রিস্ক COD নিশ্চিত করুন।",
cta_glama: "⚡ View on Glama.ai",
cta_github: "★ View on GitHub",
cta_mcp: "Connect MCP Endpoint ↗",
cta_glama: "⚡ Glama.ai-তে দেখুন",
cta_github: "★ GitHub-এ দেখুন",
cta_mcp: "MCP এন্ডপয়েন্ট কানেক্ট করুন ↗",
meta_tools_count: "৯টি",
meta_tools: "এন্টারপ্রাইজ টুলস",
meta_couriers_count: "৪টি",
meta_couriers: "কুরিয়ার + গুগল ম্যাপস",
meta_risk: "জিরো-রিস্ক সিওডি · ফ্রড এআই",
courier_eyebrow: "// SUPPORTED CARRIERS",
courier_eyebrow: "// সমর্থিত কুরিয়ার নেটওয়ার্ক",
courier_heading: "বাংলাদেশের ৪টি শীর্ষস্থানীয় কুরিয়ার",
courier_subtitle: "একই সর্বজনীন ইন্টারফেসে দেশের বৃহত্তম ৪টি লজিস্টিকস নেটওয়ার্ক — সমান গুরুত্ব ও পূর্ণ কার্যক্ষমতায় সক্রিয়।",
sf_desc: "Packzy API v1 · সারা দেশে ৬৪ জেলায় ২৪-৪৮ ঘণ্টার ক্যাশ অন ডেলিভারি ও অটোমেটেড ট্র্যাকিং।",
@@ -529,17 +529,17 @@ const i18n = {
rx_meta: "দেশজুড়ে ২,৮৪৯+ হাব · ডোরস্টেপ পিকআপ নেটওয়ার্ক",
pf_desc: "Wing API v1 · প্রত্যন্ত ইউনিয়ন পর্যন্ত ডোরস্টেপ পিকআপ ও হোম ডেলিভারি কাভারেজ।",
pf_meta: "প্রত্যন্ত ইউনিয়ন কাভারেজ · ডোর-টু-ডোর ডেলিভারি",
spatial_title: "📍 Google Maps Platform — Spatial Routing Engine",
spatial_title: "📍 Google Maps Platform — স্পেশিয়াল রাউটিং ইঞ্জিন",
spatial_desc: "Geocoding API, Routes API v2 ও রুটপ-লেভেল কোঅর্ডিনেট দিয়ে নিখুঁত থানা/জেলা রেজোলিউশন ও রিয়েল-টাইম দূরত্ব পরিমাপ।",
spatial_badge: "● এন্টারপ্রাইজ স্পেশিয়াল এআই",
health_status_title: "Engine Status",
health_status_title: "ইঞ্জিন স্ট্যাটাস",
health_status_val: "● চলমান (Operational)",
health_proto_title: "Protocol",
health_tools_title: "Registered Tools",
health_proto_title: "প্রোটোকল",
health_tools_title: "নিবন্ধিত টুলস",
health_tools_val: "৯টি প্রোডাকশন টুলস",
health_wh_title: "Active Webhooks",
tools_eyebrow: "// ENTERPRISE TOOLS",
tools_heading: "One Interface, Every Courier & Spatial Capability",
health_wh_title: "সক্রিয় ওয়েব-হুক",
tools_eyebrow: "// এন্টারপ্রাইজ টুলস",
tools_heading: "একটি একক ইন্টারফেসে সকল কুরিয়ার ও স্পেশিয়াল ক্ষমতা",
tools_subtitle: "প্রতিটা courier আলাদা API ও কাঠামোর — Aura Courier MCP সবগুলোকে একই সর্বজনীন ও নির্ভরযোগ্য toolset-এ নিয়ে এসেছে। আপনার AI Agent-কে নির্দেশ দিন, বাকি জটিল হিসাব ও ডিসপ্যাচ ও সামলে নেবে।",
tag_order: "অর্ডার ডিসপ্যাচ",
tag_track: "ইউনিফাইড ট্র্যাকিং",
@@ -559,7 +559,7 @@ const i18n = {
tool_fee_desc: "ঠিকানা অনুযায়ী অটোমেটিক জোন ক্লাসিফিকেশন (Dhaka: ৳80, Sub-Dhaka: ৳100, Outside Dhaka: ৳150) ও ডেলিভারি চার্জ নির্ধারণ।",
tool_compare_desc: "সবগুলো কুরিয়ারের রিয়েল-টাইম রেট, COD কমিশন ও প্রত্যাশিত ডেলিভারি টাইমলাইন পাশাপাশি তুলনা করে সেরা কুরিয়ার নির্বাচন।",
tool_ndr_desc: "নন-ডেলিভারি রিপোর্ট (NDR) সমস্যা চিহ্নিত করে গ্রাহকের জন্য অটোমেটিক বাংলা/ইংরেজি WhatsApp মেসেজ ড্রাফট ও কুরিয়ার ডিসপুট গাইডেন্স তৈরি।",
wh_eyebrow: "// REAL-TIME WEBHOOKS",
wh_eyebrow: "// রিয়েল-টাইম ওয়েব-হুক",
wh_heading: "৪টি কুরিয়ারেরই রিয়েল-টাইম অটোমেশন ও ইভেন্ট রিসিভার",
wh_subtitle: "যেকোনো কুরিয়ারে ডেলিভারি স্ট্যাটাস পরিবর্তন হওয়া মাত্রই Aura Courier MCP-তে তাৎক্ষণিক সিঙ্ক হয়।",
wh_sf_title: "⚡ Steadfast Webhook",
@@ -570,11 +570,11 @@ const i18n = {
wh_rx_desc: "RedX মার্চেন্ট কনসোলে রেজিস্টার করুন। ২,৮৪৯টি হাবের ট্র্যাকিং ও ডেলিভারি স্ট্যাটাস স্বয়ংক্রিয়ভাবে সিঙ্ক করে।",
wh_pf_title: "⚡ Paperfly Webhook",
wh_pf_desc: "Paperfly Wing সিস্টেমে যুক্ত করুন। ডোর-টু-ডোর ডেলিভারি ইভেন্ট ও রিটার্ন স্ট্যাটাস ইনস্ট্যান্ট ক্যাপচার করে।",
connect_eyebrow: "// CONNECT",
connect_eyebrow: "// কানেক্ট করুন",
connect_heading: "যুক্ত করুন যেকোনো ক্লায়েন্টে",
connect_subtitle: "Hosted Streamable-HTTP URL বা লোকাল কনফিগারেশন — ৪টি কুরিয়ার ও Google Maps সহ আপনার প্ল্যাটফর্মের পূর্ণাঙ্গ কনফিগ কপি করুন।",
copy_btn: "কনফিগ কপি করুন",
vision_eyebrow: "আমাদের ভিশন",
vision_eyebrow: "// আমাদের ভিশন",
vision_heading: "এক ছাদের নিচে দেশের সব commerce API",
vision_desc: "Aura বানাচ্ছে বাংলাদেশের agentic commerce স্তর — courier, payments, spatial intelligence এবং আরও অনেক connector — যাতে যেকোনো AI স্বয়ংক্রিয়ভাবে ও বিশ্বমানের নির্ভুলতায় দেশের যেকোনো ব্যবসার অপারেশন পরিচালনা করতে পারে। মানুষের স্বপ্ন · এআই-এর হাত।",
footer_license: "Aura Courier MCP v2.4 · Developed by <b>Aura Agentic AI</b> · Released under <b>Apache License 2.0</b>",
@@ -652,7 +652,7 @@ const i18n = {
connect_heading: "Connect to Any Client or AI Agent",
connect_subtitle: "Hosted Streamable-HTTP URL or local command configuration — copy ready-to-use snippets for all 4 couriers & Google Maps.",
copy_btn: "Copy Config",
vision_eyebrow: "THE VISION",
vision_eyebrow: "// THE VISION",
vision_heading: "Bangladesh's Commerce Infrastructure, Agentic-Ready",
vision_desc: "Aura is building the foundational agentic commerce layer for Bangladesh — couriers, payment gateways, spatial intelligence, and e-commerce connectors — enabling any AI to autonomously operate country-wide commerce with world-class precision. Human dreams powered by AI hands.",
footer_license: "Aura Courier MCP v2.4 · Developed by <b>Aura Agentic AI</b> · Released under <b>Apache License 2.0</b>",
@@ -675,20 +675,12 @@ function setLang(lang) {
const dict = i18n[lang];
document.querySelectorAll('[data-i18n]').forEach(el => {
const key = el.getAttribute('data-i18n');
if (dict[key]) {
if (dict && dict[key]) {
el.innerHTML = dict[key];
}
});
}
// Initialize on page load
document.addEventListener('DOMContentLoaded', () => {
setLang(currentLang);
});
if (document.readyState === 'interactive' || document.readyState === 'complete') {
setLang(currentLang);
}
const configs = {
antigravity: `{\n "mcpServers": {\n "aura-courier": {\n "command": "npx.cmd",\n "args": ["-y", "aura-courier-mcp@latest"],\n "env": {\n "STEADFAST_API_KEY": "YOUR_STEADFAST_API_KEY",\n "STEADFAST_SECRET_KEY": "YOUR_STEADFAST_SECRET_KEY",\n "PATHAO_CLIENT_ID": "YOUR_PATHAO_CLIENT_ID",\n "PATHAO_CLIENT_SECRET": "YOUR_PATHAO_CLIENT_SECRET",\n "PATHAO_USERNAME": "YOUR_PATHAO_USER",\n "PATHAO_PASSWORD": "YOUR_PATHAO_PASS",\n "REDX_API_TOKEN": "YOUR_REDX_TOKEN",\n "PAPERFLY_KEY": "YOUR_PAPERFLY_KEY",\n "PAPERFLY_USERNAME": "YOUR_PAPERFLY_USER",\n "PAPERFLY_PASSWORD": "YOUR_PAPERFLY_PASS",\n "GOOGLE_MAPS_API_KEY": "YOUR_GOOGLE_MAPS_KEY"\n }\n }\n }\n}`,
hosted: `{\n "mcpServers": {\n "aura-courier": {\n "url": "https://courier.auraajenticai.cloud/mcp",\n "headers": {\n "x-steadfast-api-key": "YOUR_STEADFAST_KEY",\n "x-steadfast-secret-key": "YOUR_STEADFAST_SECRET",\n "x-pathao-client-id": "YOUR_PATHAO_CLIENT_ID",\n "x-pathao-client-secret": "YOUR_PATHAO_CLIENT_SECRET",\n "x-redx-api-token": "YOUR_REDX_TOKEN",\n "x-paperfly-key": "YOUR_PAPERFLY_KEY",\n "x-paperfly-user": "YOUR_PAPERFLY_USER",\n "x-paperfly-pass": "YOUR_PAPERFLY_PASS"\n }\n }\n }\n}`,
@@ -696,22 +688,22 @@ const configs = {
cursor: `{\n "mcpServers": {\n "aura-courier": {\n "command": "npx",\n "args": ["-y", "aura-courier-mcp@latest"],\n "env": {\n "STEADFAST_API_KEY": "YOUR_STEADFAST_API_KEY",\n "STEADFAST_SECRET_KEY": "YOUR_STEADFAST_SECRET_KEY",\n "PATHAO_CLIENT_ID": "YOUR_PATHAO_CLIENT_ID",\n "PATHAO_CLIENT_SECRET": "YOUR_PATHAO_CLIENT_SECRET",\n "PATHAO_USERNAME": "YOUR_PATHAO_USER",\n "PATHAO_PASSWORD": "YOUR_PATHAO_PASS",\n "REDX_API_TOKEN": "YOUR_REDX_TOKEN",\n "PAPERFLY_KEY": "YOUR_PAPERFLY_KEY",\n "PAPERFLY_USERNAME": "YOUR_PAPERFLY_USER",\n "PAPERFLY_PASSWORD": "YOUR_PAPERFLY_PASS",\n "GOOGLE_MAPS_API_KEY": "YOUR_GOOGLE_MAPS_KEY"\n }\n }\n }\n}`
};
function switchTab(key) {
function switchTab(key, btnEl) {
document.querySelectorAll('.tab-btn').forEach(b => {
b.classList.remove('active');
b.setAttribute('aria-selected', 'false');
});
if (event && event.currentTarget) {
event.currentTarget.classList.add('active');
event.currentTarget.setAttribute('aria-selected', 'true');
const target = btnEl || (window.event && window.event.currentTarget);
if (target) {
target.classList.add('active');
target.setAttribute('aria-selected', 'true');
}
document.getElementById('code-snippet').textContent = configs[key];
}
function copyCode() {
const code = document.getElementById('code-snippet').textContent;
navigator.clipboard.writeText(code).then(() => {
function showCopiedFeedback() {
const btn = document.querySelector('.copy-btn');
if (!btn) return;
const origText = btn.textContent;
btn.textContent = currentLang === 'bn' ? 'কপি হয়েছে! ✓' : 'Copied! ✓';
btn.style.color = 'var(--green)';
@@ -719,7 +711,46 @@ function copyCode() {
btn.textContent = origText;
btn.style.color = 'var(--muted)';
}, 2000);
}
function fallbackCopy(text) {
const ta = document.createElement('textarea');
ta.value = text;
ta.style.position = 'fixed';
ta.style.opacity = '0';
document.body.appendChild(ta);
ta.select();
try {
document.execCommand('copy');
showCopiedFeedback();
} catch (err) {}
document.body.removeChild(ta);
}
function copyCode() {
const code = document.getElementById('code-snippet').textContent;
if (navigator.clipboard && navigator.clipboard.writeText) {
navigator.clipboard.writeText(code).then(() => {
showCopiedFeedback();
}).catch(() => {
fallbackCopy(code);
});
} else {
fallbackCopy(code);
}
}
window.i18n = i18n;
window.setLang = setLang;
window.switchTab = switchTab;
window.copyCode = copyCode;
// Initialize on page load
document.addEventListener('DOMContentLoaded', () => {
setLang(currentLang);
});
if (document.readyState === 'interactive' || document.readyState === 'complete') {
setLang(currentLang);
}
</script>
</body>