Skip to content

Commit

Permalink
add more translation
Browse files Browse the repository at this point in the history
  • Loading branch information
sansyrox committed Jan 11, 2025
1 parent 5cccc97 commit a1ab069
Showing 1 changed file with 116 additions and 7 deletions.
123 changes: 116 additions & 7 deletions docs_src/src/components/documentation/Navigation.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -374,25 +374,134 @@ export const navigation = [
},
]

// Add translations for navigation titles
const navigationTitles = {
en: {
'Documentation': 'Documentation',
'Example Application': 'Example Application',
'API Reference': 'API Reference',
'Community Resources': 'Community Resources',
'Architecture': 'Architecture',
'Framework Comparison': 'Framework Comparison',
'Hosting': 'Hosting',
'Plugins': 'Plugins',
'Future Roadmap': 'Future Roadmap'
},
zh: {
'Documentation': '文档',
'Example Application': '示例应用',
'API Reference': 'API 参考',
'Community Resources': '社区资源',
'Architecture': '架构',
'Framework Comparison': '框架对比',
'Hosting': '托管',
'Plugins': '插件',
'Future Roadmap': '未来路线图'
}
}

// Add translations for navigation titles and link titles
const translations = {
en: {
titles: navigationTitles.en,
links: {
'Getting Started': 'Getting Started',
'Modeling Routes': 'Modeling Routes',
'Authentication and Authorization': 'Authentication and Authorization',
'Middlewares': 'Middlewares',
'Real Time Notifications': 'Real Time Notifications',
'Monitoring and Logging': 'Monitoring and Logging',
'Deployment': 'Deployment',
'OpenAPI Documentation': 'OpenAPI Documentation',
'Templates': 'Templates',
'SubRouters': 'SubRouters',
'Installation': 'Installation',
'The Request Object': 'The Request Object',
'The Robyn Env file': 'The Robyn Env file',
'Middlewares, Events and Websockets': 'Middlewares, Events and Websockets',
'Authentication': 'Authentication',
'Const Requests and Multi Core Scaling': 'Const Requests and Multi Core Scaling',
'CORS': 'CORS',
'Templating': 'Templating',
'Redirection': 'Redirection',
'File Uploads': 'File Uploads',
'Form Data': 'Form Data',
'Websockets': 'Websockets',
'Exceptions': 'Exceptions',
'Scaling the Application': 'Scaling the Application',
'Advanced Features': 'Advanced Features',
'Multiprocess Execution': 'Multiprocess Execution',
'Direct Rust Usage': 'Direct Rust Usage',
'GraphQL Support': 'GraphQL Support',
'Dependency Injection': 'Dependency Injection',
'Talks': 'Talks',
'Blogs': 'Blogs',
'Introduction': 'Introduction',
'Upcoming Features': 'Upcoming Features',
'Railway': 'Railway',
'Exposing Ports': 'Exposing Ports'
}
},
zh: {
titles: navigationTitles.zh,
links: {
'Getting Started': '开始使用',
'Modeling Routes': '路由建模',
'Authentication and Authorization': '身份验证和授权',
'Middlewares': '中间件',
'Real Time Notifications': '实时通知',
'Monitoring and Logging': '监控和日志',
'Deployment': '部署',
'OpenAPI Documentation': 'OpenAPI 文档',
'Templates': '模板',
'SubRouters': '子路由',
'Installation': '安装',
'The Request Object': '请求对象',
'The Robyn Env file': 'Robyn 环境文件',
'Middlewares, Events and Websockets': '中间件、事件和 WebSocket',
'Authentication': '身份验证',
'Const Requests and Multi Core Scaling': '常量请求和多核心扩展',
'CORS': '跨域资源共享',
'Templating': '模板系统',
'Redirection': '重定向',
'File Uploads': '文件上传',
'Form Data': '表单数据',
'Websockets': 'WebSocket',
'Exceptions': '异常处理',
'Scaling the Application': '应用程序扩展',
'Advanced Features': '高级功能',
'Multiprocess Execution': '多进程执行',
'Direct Rust Usage': '直接使用 Rust',
'GraphQL Support': 'GraphQL 支持',
'Dependency Injection': '依赖注入',
'Talks': '演讲',
'Blogs': '博客',
'Introduction': '介绍',
'Upcoming Features': '即将推出的功能',
'Railway': 'Railway',
'Exposing Ports': '端口暴露'
}
}
}

export function Navigation(props) {
const router = useRouter()
const currentLanguage = router.locale || 'en'
const currentLanguage = router.asPath.includes('/zh') ? 'zh' : 'en'

// Function to transform links based on current language
const getLocalizedHref = (href) => {
// If it's the root documentation page
if (href === '/documentation') {
return `/documentation/${currentLanguage}`
}
// For all other links, replace /en/ with current language
return href.replace('/documentation/en/', `/documentation/${currentLanguage}/`)
}

// Create localized navigation
// Create localized navigation with translated titles and link titles
const localizedNavigation = navigation.map(group => ({
...group,
title: translations[currentLanguage].titles[group.title] || group.title,
links: group.links.map(link => ({
...link,
title: translations[currentLanguage].links[link.title] || link.title,
href: getLocalizedHref(link.href)
}))
}))
Expand All @@ -404,8 +513,8 @@ export function Navigation(props) {
</div>
<ul role="list">
<TopLevelNavItem href="/">API</TopLevelNavItem>
<TopLevelNavItem href="#">Documentation</TopLevelNavItem>
<TopLevelNavItem href="#">Support</TopLevelNavItem>
<TopLevelNavItem href="#">{currentLanguage === 'zh' ? '文档' : 'Documentation'}</TopLevelNavItem>
<TopLevelNavItem href="#">{currentLanguage === 'zh' ? '支持' : 'Support'}</TopLevelNavItem>
{localizedNavigation.map((group, groupIndex) => (
<NavigationGroup
key={group.title}
Expand Down

0 comments on commit a1ab069

Please sign in to comment.