diff --git a/components/Navigator/MainNavigator.tsx b/components/Navigator/MainNavigator.tsx index 943f739..f2e7131 100644 --- a/components/Navigator/MainNavigator.tsx +++ b/components/Navigator/MainNavigator.tsx @@ -62,7 +62,8 @@ const topNavBarMenu = ({ t }: typeof i18n): MenuItem[] => [ }, ], }, - { href: '/bounty', title: t('bounty') }, + { href: '/bounty', title: t('bounty') } + { href: '/library', title: t('open_library') }, { title: t('NGO'), subs: [ diff --git a/pages/library/[id].tsx b/pages/library/[id].tsx new file mode 100644 index 0000000..5ccec53 --- /dev/null +++ b/pages/library/[id].tsx @@ -0,0 +1,112 @@ +import { observer } from "mobx-react"; +import { cache, compose, errorLogger } from "next-ssr-middleware"; +import { FC, useContext } from "react"; +import { Badge, Card, Col, Container, Row } from "react-bootstrap"; + +import { PageHead } from "../../../components/Layout/PageHead"; +import { I18nContext } from "../../../models/Translation"; +import { libraryBooks } from "../books"; + +export const getServerSideProps = compose(cache(), errorLogger, async ({ params }) => { + const book = libraryBooks.find((b) => b.id === params.id); + if (!book) return { notFound: true }; + return { props: { book } }; +}); + +const BookDetailPage: FC<{ book: (typeof libraryBooks)[number] }> = observer(({ book }) => { + const { t } = useContext(I18nContext); + + return ( + + + + ← {t("back_to_library")} + + + + + + + + {t(book.status === "available" ? "library_status_available" : "library_status_borrowed" as any)} + + + + + + {book.title} + {book.author} + + {book.tags && ( + + {book.tags.map((tag) => ( + {tag} + ))} + + )} + + {book.description} + + + {t("book_details")} + + + {book.publisher && ( + {t("publisher")}{book.publisher} + )} + {book.year && ( + {t("year")}{book.year} + )} + {book.isbn && ( + ISBN{book.isbn} + )} + {book.pages && ( + {t("pages")}{book.pages} + )} + {book.language && ( + {t("language")}{book.language} + )} + {t("category")}{t("library_category_" + book.category as any)} + + + + + {book.status === "borrowed" && book.borrower && ( + + {t("borrowing_info")} + + + {t("borrower")}{book.borrower} + {book.borrowDate && {t("borrow_date")}{book.borrowDate}} + {book.returnDate && {t("expected_return_date")}{book.returnDate}} + + + + )} + + + {t("borrowing_guide")} + + + {t("borrowing_guide_step1")} + {t("borrowing_guide_step2")} + {t("borrowing_guide_step3")} + {t("borrowing_guide_step4")} + {t("borrowing_guide_step5")} + + + + + ← {t("back_to_library")} + + + + ); +}); + +export default BookDetailPage; \ No newline at end of file diff --git a/pages/library/books.ts b/pages/library/books.ts new file mode 100644 index 0000000..302d5cf --- /dev/null +++ b/pages/library/books.ts @@ -0,0 +1,147 @@ +import type { Book } from '../../types/library'; + +export const libraryBooks: Book[] = [ + { + id: 'the-cathedral-and-the-bazaar', + title: 'The Cathedral and the Bazaar', + author: 'Eric S. Raymond', + cover: 'https://images-na.ssl-images-amazon.com/images/I/51G9NqRf1-L._SX331_BO1,204,203,200_.jpg', + description: 'A classic essay on open source development methodology.', + category: 'open-source', + status: 'available', + publisher: "O'Reilly Media", + year: 1999, + tags: ['open source', 'classic', 'methodology'], + }, + { + id: 'producing-open-source-software', + title: 'Producing Open Source Software', + author: 'Karl Fogel', + cover: 'https://producingoss.com/images/producingoss-cover-small.gif', + description: 'How to Run a Successful Free Software Project.', + category: 'open-source', + status: 'available', + publisher: "O'Reilly Media", + year: 2005, + tags: ['community', 'project management'], + }, + { + id: 'the-open-source-way', + title: 'The Open Source Way', + author: 'Red Hat Community', + cover: 'https://www.theopensourceway.org/images/cover.png', + description: 'Guide to managing and participating in open source communities.', + category: 'open-source', + status: 'borrowed', + borrower: 'Zhang San', + borrowDate: '2026-06-15', + returnDate: '2026-07-15', + tags: ['community guide', 'Red Hat'], + }, + { + id: 'clean-code', + title: 'Clean Code', + author: 'Robert C. Martin', + cover: 'https://images-na.ssl-images-amazon.com/images/I/41xShlnTZTL._SX376_BO1,204,203,200_.jpg', + description: 'A Handbook of Agile Software Craftsmanship.', + category: 'programming', + status: 'available', + publisher: 'Pearson', + year: 2008, + tags: ['code quality', 'refactoring', 'agile'], + }, + { + id: 'design-patterns', + title: 'Design Patterns', + author: 'Gamma, Helm, Johnson, Vlissides', + cover: 'https://images-na.ssl-images-amazon.com/images/I/51kuc0iWoEL._SX379_BO1,204,203,200_.jpg', + description: 'Elements of Reusable Object-Oriented Software.', + category: 'programming', + status: 'borrowed', + borrower: 'Li Si', + borrowDate: '2026-06-20', + returnDate: '2026-08-20', + tags: ['OOP', 'architecture', 'classic'], + }, + { + id: 'art-of-community', + title: 'The Art of Community', + author: 'Jono Bacon', + cover: 'https://www.artofcommunityonline.org/images/book-cover.jpg', + description: 'Building the New Age of Participation.', + category: 'community', + status: 'available', + publisher: "O'Reilly Media", + year: 2009, + tags: ['community building', 'leadership'], + }, + { + id: 'working-in-public', + title: 'Working in Public', + author: 'Nadia Eghbal', + cover: 'https://images-na.ssl-images-amazon.com/images/I/41PFTZYKCAL._SX329_BO1,204,203,200_.jpg', + description: 'The Making and Maintenance of Open Source Software.', + category: 'open-source', + status: 'available', + publisher: 'Stripe Press', + year: 2020, + tags: ['open source ecosystem', 'maintainers'], + }, + { + id: 'refactoring', + title: 'Refactoring', + author: 'Martin Fowler', + cover: 'https://images-na.ssl-images-amazon.com/images/I/41odjOW0AVL._SX379_BO1,204,203,200_.jpg', + description: 'Improving the Design of Existing Code.', + category: 'programming', + status: 'available', + publisher: 'Addison-Wesley', + year: 2018, + tags: ['code quality', 'design'], + }, + { + id: 'open-source-licenses', + title: 'Understanding Open Source Licensing', + author: 'Andrew M. St. Laurent', + cover: 'https://images-na.ssl-images-amazon.com/images/I/51vDk3qNWQL._SX379_BO1,204,203,200_.jpg', + description: 'Guide to legal and practical aspects of open source licensing.', + category: 'open-source', + status: 'borrowed', + borrower: 'Wang Wu', + borrowDate: '2026-06-01', + returnDate: '2026-07-01', + tags: ['licenses', 'legal', 'compliance'], + }, + { + id: 'think-like-a-commoner', + title: 'Think Like a Commoner', + author: 'David Bollier', + cover: 'https://images-na.ssl-images-amazon.com/images/I/41TjkXY6nkL._SX331_BO1,204,203,200_.jpg', + description: 'A Short Introduction to the Commons.', + category: 'community', + status: 'available', + tags: ['commons', 'sharing economy'], + }, + { + id: 'dont-make-me-think', + title: "Don't Make Me Think", + author: 'Steve Krug', + cover: 'https://images-na.ssl-images-amazon.com/images/I/51WS36aVMbL._SX387_BO1,204,203,200_.jpg', + description: 'A Common Sense Approach to Web Usability.', + category: 'design', + status: 'available', + publisher: 'New Riders', + year: 2014, + tags: ['UX', 'usability', 'web design'], + }, + { + id: 'lean-startup', + title: 'The Lean Startup', + author: 'Eric Ries', + cover: 'https://images-na.ssl-images-amazon.com/images/I/41GQjLsSN5L._SX329_BO1,204,203,200_.jpg', + description: 'How Today Entrepreneurs Use Continuous Innovation.', + category: 'business', + status: 'available', + tags: ['startup', 'innovation', 'methodology'], + }, +]; diff --git a/pages/library/index.tsx b/pages/library/index.tsx new file mode 100644 index 0000000..b4368be --- /dev/null +++ b/pages/library/index.tsx @@ -0,0 +1,120 @@ +import { observer } from 'mobx-react'; +import { cache, compose, errorLogger } from 'next-ssr-middleware'; +import { FC, useContext, useMemo, useState } from 'react'; +import { Badge, Button, Card, Col, Container, Form, Row } from 'react-bootstrap'; +import Link from 'next/link'; + +import { PageHead } from '../../components/Layout/PageHead'; +import { SectionTitle } from '../../components/Layout/SectionTitle'; +import { I18nContext } from '../../models/Translation'; +import type { Book, BookCategory, BookStatus } from '../../types/library'; +import { libraryBooks } from './books'; + +export const getServerSideProps = compose(cache(), errorLogger, async () => ({ + props: {} as Record, +})); + +const CATEGORY_OPTIONS: { value: BookCategory | 'all'; labelKey: string }[] = [ + { value: 'all', labelKey: 'library_category_all' }, + { value: 'open-source', labelKey: 'library_category_open_source' }, + { value: 'programming', labelKey: 'library_category_programming' }, + { value: 'community', labelKey: 'library_category_community' }, + { value: 'design', labelKey: 'library_category_design' }, + { value: 'business', labelKey: 'library_category_business' }, +]; + +const LibraryPage: FC = observer(() => { + const { t } = useContext(I18nContext); + const [category, setCategory] = useState('all'); + const [search, setSearch] = useState(''); + + const filteredBooks = useMemo(() => { + let books: Book[] = libraryBooks; + if (category !== 'all') { + books = books.filter((b) => b.category === category); + } + if (search.trim()) { + const q = search.toLowerCase(); + books = books.filter( + (b) => + b.title.toLowerCase().includes(q) || + b.author.toLowerCase().includes(q) || + b.tags?.some((tag) => tag.toLowerCase().includes(q)), + ); + } + return books; + }, [category, search]); + + return ( + + + {t('open_library')} + + + {t('open_library_description')} + + + setSearch((e.target as HTMLInputElement).value)} + /> + + + setCategory((e.target as HTMLSelectElement).value as BookCategory | 'all')} + > + {CATEGORY_OPTIONS.map(({ value, labelKey }) => ( + {t(labelKey as any)} + ))} + + + + + + {t('book_catalog')} + + {filteredBooks.map((book) => ( + + + + + + + {book.title} + {book.author} + + + {t(book.status === 'available' ? 'library_status_available' : 'library_status_borrowed' as any)} + + {book.tags?.slice(0, 2).map((tag) => ( + {tag} + ))} + + + + {t('view_details')} + + + + + + ))} + + + {filteredBooks.length === 0 && ( + {t('no_books_found')} + )} + + ); +}); + +export default LibraryPage; diff --git a/translation/en-US.ts b/translation/en-US.ts index 4419cb6..8f3c01e 100644 --- a/translation/en-US.ts +++ b/translation/en-US.ts @@ -157,12 +157,12 @@ export default { index_metric_one_year_return: '1-year return', index_metric_max_drawdown: 'Max drawdown', updated_at: 'Updated at', - view_details: 'View details →', + view_details: 'View details 鈫?, beta: 'Beta', finance_page_title: 'Index Fund Picks', finance_page_description: 'A curated index fund page for beginner investors in China, powered by AKShare real-time data.', - finance_hero_title: 'Index Fund Investing · China Selection', + finance_hero_title: 'Index Fund Investing 路 China Selection', finance_hero_intro: 'A curated set of Chinese index funds based on AKShare data, helping beginners understand risk, return and volatility to build a suitable portfolio.', finance_hero_chip_akshare_data: 'AKShare index data', @@ -177,7 +177,7 @@ export default { finance_hero_stat_refresh_sub: 'Auto-updating real-time prices', finance_hero_stat_risk_label: 'Risk tips', finance_hero_stat_risk_value: '3', - finance_hero_stat_risk_sub: 'Conservative · Balanced · Aggressive', + finance_hero_stat_risk_sub: 'Conservative 路 Balanced 路 Aggressive', finance_filter_title: 'Quick filter', finance_filter_summary_prefix: 'Filter by risk and category, current selection: ', finance_filter_reset: 'Clear filters', @@ -268,7 +268,7 @@ export default { hackathon_criteria_presentation_title: 'Presentation & Design', hackathon_criteria_presentation_desc: 'Clear storytelling, polished interaction, and persuasive product experience.', - hackathon_action_hub: 'Action Hub · Forms', + hackathon_action_hub: 'Action Hub 路 Forms', hackathon_entry_flow: 'Registration and Submission Flow', hackathon_entry_flow_description: 'Entries are generated from the current activity schema so different events can reuse the same page structure.', @@ -339,4 +339,37 @@ export default { team_members: 'Team Members', team_works: 'Team Works', no_news_yet: 'No news yet', + // Open Library + open_library: 'Open Library', + open_library_description: 'Browse open source and technical books, support borrowing and sharing', + book_catalog: 'Book Catalog', + search_books_placeholder: 'Search by title, author, or tags...', + library_category_all: 'All Categories', + library_category_open_source: 'Open Source', + library_category_programming: 'Programming', + library_category_community: 'Community', + library_category_design: 'Design', + library_category_business: 'Business', + library_status_all: 'All Status', + library_status_available: 'Available', + library_status_borrowed: 'Borrowed', + view_details: 'View Details', + back_to_library: 'Back to Library', + no_books_found: 'No matching books found', + book_details: 'Book Details', + publisher: 'Publisher', + year: 'Year', + pages: 'Pages', + language: 'Language', + category: 'Category', + borrowing_info: 'Borrowing Info', + borrower: 'Borrower', + borrow_date: 'Borrow Date', + expected_return_date: 'Expected Return Date', + borrowing_guide: 'Borrowing Guide', + borrowing_guide_step1: 'Select a book you are interested in from the catalog', + borrowing_guide_step2: 'View book details and confirm availability', + borrowing_guide_step3: 'Contact Open Source Bazaar admin to submit a borrow request', + borrowing_guide_step4: 'After admin approval, pick up the book at the designated location', + borrowing_guide_step5: 'Please return on time so others can borrow', }; diff --git a/translation/zh-CN.ts b/translation/zh-CN.ts index ae27758..04562f7 100644 --- a/translation/zh-CN.ts +++ b/translation/zh-CN.ts @@ -1,318 +1,351 @@ export default { // Navigation - open_source_bazaar: '开源市集', - about: '关于', - history: '历史', - code_of_conduct: '行为规范', - join_us: '参与', - open_collaborator_award: '开放协作人奖', - open_source_projects: '开源项目', - self_developed_projects: '自研项目', - bazaar_projects: '市集项目', - activity: '活动', - hackathon: '黑客马拉松', - bounty: '开源悬赏', - home_page: '主页', - wiki: '知识库', + open_source_bazaar: '寮€婧愬競闆?, + about: '鍏充簬', + history: '鍘嗗彶', + code_of_conduct: '琛屼负瑙勮寖', + join_us: '鍙備笌', + open_collaborator_award: '寮€鏀惧崗浣滀汉濂?, + open_source_projects: '寮€婧愰」鐩?, + self_developed_projects: '鑷爺椤圭洰', + bazaar_projects: '甯傞泦椤圭洰', + activity: '娲诲姩', + hackathon: '榛戝椹媺鏉?, + bounty: '寮€婧愭偓璧?, + home_page: '涓婚〉', + wiki: '鐭ヨ瘑搴?, // Search - keywords: '关键词', - search_results: '搜索结果', - breadcrumb: '面包屑导航', + keywords: '鍏抽敭璇?, + search_results: '鎼滅储缁撴灉', + breadcrumb: '闈㈠寘灞戝鑸?, // Scroll List - load_more: '加载更多……', - no_more: '没有更多', + load_more: '鍔犺浇鏇村鈥︹€?, + no_more: '娌℃湁鏇村', // Home page sections - participate: '参与', - code_work: '代码工作', - non_code_work: '非代码工作', - action: '行动', - we_are_organizing_bazaar: '我们正在筹办 3 月开源市集,欢迎参与!', - welcome_open_collaboration: '欢迎参与', - open_collaboration: '开放式协作', + participate: '鍙備笌', + code_work: '浠g爜宸ヤ綔', + non_code_work: '闈炰唬鐮佸伐浣?, + action: '琛屽姩', + we_are_organizing_bazaar: '鎴戜滑姝e湪绛瑰姙 3 鏈堝紑婧愬競闆嗭紝娆㈣繋鍙備笌锛?, + welcome_open_collaboration: '娆㈣繋鍙備笌', + open_collaboration: '寮€鏀惧紡鍗忎綔', // Volunteer page - volunteer: '志愿者', - online_volunteer: '线上志愿者', + volunteer: '蹇楁効鑰?, + online_volunteer: '绾夸笂蹇楁効鑰?, // Bounty page - bounty_page_title: '开源悬赏', - bounty_page_description: '参与开源项目,获得悬赏奖励', - bounty_dashboard: '仪表盘', - bounty_token_rank: '代币榜', - bounty_task_rank: '任务榜', - bounty_task_submission: '任务发布表单', - bounty_achievement_rank: '成果榜', - bounty_achievement_submission: '成果提交表单', - bounty_hero_rank: '英雄榜', - bounty_debt_rank: '欠条榜', + bounty_page_title: '寮€婧愭偓璧?, + bounty_page_description: '鍙備笌寮€婧愰」鐩紝鑾峰緱鎮祻濂栧姳', + bounty_dashboard: '浠〃鐩?, + bounty_token_rank: '浠e竵姒?, + bounty_task_rank: '浠诲姟姒?, + bounty_task_submission: '浠诲姟鍙戝竷琛ㄥ崟', + bounty_achievement_rank: '鎴愭灉姒?, + bounty_achievement_submission: '鎴愭灉鎻愪氦琛ㄥ崟', + bounty_hero_rank: '鑻遍泟姒?, + bounty_debt_rank: '娆犳潯姒?, //License-tool Page - license_filter: '开源协议选择器', - feature_attitude_undefined: '我不在乎', - feature_attitude_positive: '我需要', - feature_attitude_negative: '我不需要', - infection_range_library: '传染范围到库', - infection_range_file: '传染范围到文件', - infection_range_module: '传染范围到模块', - infection_range_undefined: '不进行要求', + license_filter: '寮€婧愬崗璁€夋嫨鍣?, + feature_attitude_undefined: '鎴戜笉鍦ㄤ箮', + feature_attitude_positive: '鎴戦渶瑕?, + feature_attitude_negative: '鎴戜笉闇€瑕?, + infection_range_library: '浼犳煋鑼冨洿鍒板簱', + infection_range_file: '浼犳煋鑼冨洿鍒版枃浠?, + infection_range_module: '浼犳煋鑼冨洿鍒版ā鍧?, + infection_range_undefined: '涓嶈繘琛岃姹?, tip_popularity_0: - '您是否希望将结果限制在开放源代码促进会(Open Source Initiative, 缩写: OSI)所描述的 "流行、广泛使用或拥有强大社群” 的许可证上?', - tip_popularity_1: '为了确保许可协议为主流许可协议,将妥协放弃掉一些不那么主流但可能有用的特征。', + '鎮ㄦ槸鍚﹀笇鏈涘皢缁撴灉闄愬埗鍦ㄥ紑鏀炬簮浠g爜淇冭繘浼氾紙Open Source Initiative, 缂╁啓: OSI锛夋墍鎻忚堪鐨?"娴佽銆佸箍娉涗娇鐢ㄦ垨鎷ユ湁寮哄ぇ绀剧兢鈥?鐨勮鍙瘉涓婏紵', + tip_popularity_1: '涓轰簡纭繚璁稿彲鍗忚涓轰富娴佽鍙崗璁紝灏嗗Ε鍗忔斁寮冩帀涓€浜涗笉閭d箞涓绘祦浣嗗彲鑳芥湁鐢ㄧ殑鐗瑰緛銆?, tip_reuse_condition: - '您想对代码的重复使用设置许可条件吗? 如果没有,您的许可证将属于所谓的 "宽松 (Permissive) " 许可证。所有自由与开源许可证都允许他人对您的代码进行修改,并将这些修改后的版本提供给他人。您的许可证可以对如何实现这一点提出条件,特别是在这些修改版本上可以使用哪些许可证。这些条件有助于保持代码的自由性,但也会使一些人不再重用您的代码。', + '鎮ㄦ兂瀵逛唬鐮佺殑閲嶅浣跨敤璁剧疆璁稿彲鏉′欢鍚? 濡傛灉娌℃湁锛屾偍鐨勮鍙瘉灏嗗睘浜庢墍璋撶殑 "瀹芥澗 (Permissive) " 璁稿彲璇併€傛墍鏈夎嚜鐢变笌寮€婧愯鍙瘉閮藉厑璁镐粬浜哄鎮ㄧ殑浠g爜杩涜淇敼锛屽苟灏嗚繖浜涗慨鏀瑰悗鐨勭増鏈彁渚涚粰浠栦汉銆傛偍鐨勮鍙瘉鍙互瀵瑰浣曞疄鐜拌繖涓€鐐规彁鍑烘潯浠讹紝鐗瑰埆鏄湪杩欎簺淇敼鐗堟湰涓婂彲浠ヤ娇鐢ㄥ摢浜涜鍙瘉銆傝繖浜涙潯浠舵湁鍔╀簬淇濇寔浠g爜鐨勮嚜鐢辨€э紝浣嗕篃浼氫娇涓€浜涗汉涓嶅啀閲嶇敤鎮ㄧ殑浠g爜銆?, tip_infection_intensity: - '您是否想选择强互惠(强传染)的协议?当您选择强互惠(强传染)许可证时,任何使用、修改或分发您的代码的人都必须遵循相同的许可证要求。这意味着他们必须提供源代码,并将其代码以相同的许可证发布。这样,您的代码的开放性将被保护,并且任何人都可以获得您的代码的源代码,以便进行学习、改进和共享。强互惠(强传染)许可证确保了对整个项目的开放性和共享性,促进了开源社区的合作和创新。但是,选择强互惠(强传染)许可证可能会对某些开发者或组织造成限制。', - tip_jurisdiction: '您是否想将自己所在区域作为司法管辖区', - tip_patent_statement: '您是否想使用明确授予专利权的许可协议(如果有)', + '鎮ㄦ槸鍚︽兂閫夋嫨寮轰簰鎯狅紙寮轰紶鏌擄級鐨勫崗璁紵褰撴偍閫夋嫨寮轰簰鎯狅紙寮轰紶鏌擄級璁稿彲璇佹椂锛屼换浣曚娇鐢ㄣ€佷慨鏀规垨鍒嗗彂鎮ㄧ殑浠g爜鐨勪汉閮藉繀椤婚伒寰浉鍚岀殑璁稿彲璇佽姹傘€傝繖鎰忓懗鐫€浠栦滑蹇呴』鎻愪緵婧愪唬鐮侊紝骞跺皢鍏朵唬鐮佷互鐩稿悓鐨勮鍙瘉鍙戝竷銆傝繖鏍凤紝鎮ㄧ殑浠g爜鐨勫紑鏀炬€у皢琚繚鎶わ紝骞朵笖浠讳綍浜洪兘鍙互鑾峰緱鎮ㄧ殑浠g爜鐨勬簮浠g爜锛屼互渚胯繘琛屽涔犮€佹敼杩涘拰鍏变韩銆傚己浜掓儬锛堝己浼犳煋锛夎鍙瘉纭繚浜嗗鏁翠釜椤圭洰鐨勫紑鏀炬€у拰鍏变韩鎬э紝淇冭繘浜嗗紑婧愮ぞ鍖虹殑鍚堜綔鍜屽垱鏂般€備絾鏄紝閫夋嫨寮轰簰鎯狅紙寮轰紶鏌擄級璁稿彲璇佸彲鑳戒細瀵规煇浜涘紑鍙戣€呮垨缁勭粐閫犳垚闄愬埗銆?, + tip_jurisdiction: '鎮ㄦ槸鍚︽兂灏嗚嚜宸辨墍鍦ㄥ尯鍩熶綔涓哄徃娉曠杈栧尯', + tip_patent_statement: '鎮ㄦ槸鍚︽兂浣跨敤鏄庣‘鎺堜簣涓撳埄鏉冪殑璁稿彲鍗忚锛堝鏋滄湁锛?, tip_patent_retaliation: - '您是否想使用包含专利报复条款的许可协议。如果有人提起诉讼,声称开源软件侵犯了他们的软件专利,该条款将触发一种反制措施。根据这种条款,原告将失去使用、复制、改编和分发开源软件的许可。这意味着如果某人发起专利诉讼,他们将无法继续使用和分发被许可的开源代码。它旨在保护开源项目和贡献者免受专利诉讼的侵害,以维护项目的自由和开放性。', + '鎮ㄦ槸鍚︽兂浣跨敤鍖呭惈涓撳埄鎶ュ鏉℃鐨勮鍙崗璁€傚鏋滄湁浜烘彁璧疯瘔璁硷紝澹扮О寮€婧愯蒋浠朵镜鐘簡浠栦滑鐨勮蒋浠朵笓鍒╋紝璇ユ潯娆惧皢瑙﹀彂涓€绉嶅弽鍒舵帾鏂姐€傛牴鎹繖绉嶆潯娆撅紝鍘熷憡灏嗗け鍘讳娇鐢ㄣ€佸鍒躲€佹敼缂栧拰鍒嗗彂寮€婧愯蒋浠剁殑璁稿彲銆傝繖鎰忓懗鐫€濡傛灉鏌愪汉鍙戣捣涓撳埄璇夎锛屼粬浠皢鏃犳硶缁х画浣跨敤鍜屽垎鍙戣璁稿彲鐨勫紑婧愪唬鐮併€傚畠鏃ㄥ湪淇濇姢寮€婧愰」鐩拰璐$尞鑰呭厤鍙椾笓鍒╄瘔璁肩殑渚靛锛屼互缁存姢椤圭洰鐨勮嚜鐢卞拰寮€鏀炬€с€?, tip_enhanced_attribution: - '您是否想使用指定“软件归属增强”的许可协议,必须以特定形式在特定情况下注明出处,例如每次运行软件时都必须在软件的用户界面上注明出处。所有自由或开源软件许可证都规定,分发或改编软件的任何人都必须在其分发的某处注明软件原作者。', + '鎮ㄦ槸鍚︽兂浣跨敤鎸囧畾鈥滆蒋浠跺綊灞炲寮衡€濈殑璁稿彲鍗忚锛屽繀椤讳互鐗瑰畾褰㈠紡鍦ㄧ壒瀹氭儏鍐典笅娉ㄦ槑鍑哄锛屼緥濡傛瘡娆¤繍琛岃蒋浠舵椂閮藉繀椤诲湪杞欢鐨勭敤鎴风晫闈笂娉ㄦ槑鍑哄銆傛墍鏈夎嚜鐢辨垨寮€婧愯蒋浠惰鍙瘉閮借瀹氾紝鍒嗗彂鎴栨敼缂栬蒋浠剁殑浠讳綍浜洪兘蹇呴』鍦ㄥ叾鍒嗗彂鐨勬煇澶勬敞鏄庤蒋浠跺師浣滆€呫€?, tip_privacy_loophole: - '您是否想使用解决“隐私漏洞”的许可协议,要求在通过网络提供服务或在内部部署代码时也必须发布源代码。这样做的目的是确保所有从开源项目中受益的人都有责任回馈社区,共享他们的改进和改编版本。', + '鎮ㄦ槸鍚︽兂浣跨敤瑙e喅鈥滈殣绉佹紡娲炩€濈殑璁稿彲鍗忚锛岃姹傚湪閫氳繃缃戠粶鎻愪緵鏈嶅姟鎴栧湪鍐呴儴閮ㄧ讲浠g爜鏃朵篃蹇呴』鍙戝竷婧愪唬鐮併€傝繖鏍峰仛鐨勭洰鐨勬槸纭繚鎵€鏈変粠寮€婧愰」鐩腑鍙楃泭鐨勪汉閮芥湁璐d换鍥為绀惧尯锛屽叡浜粬浠殑鏀硅繘鍜屾敼缂栫増鏈€?, tip_marketing_endorsement: - '您是否想使用禁止推广的许可协议,避免使用作者的姓名来推广基于作者代码的产品或服务。这样的限制,是为了保护作者的声誉或防止误导性宣传。', + '鎮ㄦ槸鍚︽兂浣跨敤绂佹鎺ㄥ箍鐨勮鍙崗璁紝閬垮厤浣跨敤浣滆€呯殑濮撳悕鏉ユ帹骞垮熀浜庝綔鑰呬唬鐮佺殑浜у搧鎴栨湇鍔°€傝繖鏍风殑闄愬埗锛屾槸涓轰簡淇濇姢浣滆€呯殑澹拌獕鎴栭槻姝㈣瀵兼€у浼犮€?, tip_infection_range: - '您想对修改版的哪些部分可以适用其它许可协议,有四个选择: 模块级,文件级,库接口级,不进行要求', + '鎮ㄦ兂瀵逛慨鏀圭増鐨勫摢浜涢儴鍒嗗彲浠ラ€傜敤鍏跺畠璁稿彲鍗忚,鏈夊洓涓€夋嫨: 妯″潡绾э紝鏂囦欢绾э紝搴撴帴鍙g骇锛屼笉杩涜瑕佹眰', - license_tool_headline: '开源许可证选择器', + license_tool_headline: '寮€婧愯鍙瘉閫夋嫨鍣?, license_tool_description: - '该工具旨在帮助用户理解他们自己对于自由和开源软件许可协议的偏好。用户必须自己阅读这些许可协议。在应用项目之前,阅读并完全理解许可协议非常重要。本工具借用的许可分类方式不能保证永远适用,因此,不可将本工具输出的信息作为法律依据。', - warn_info: '切记:必须阅读并理解您选择的许可协议', - filter_option: '筛选条件', - option_undefined: '不要求', - license_score: '评分', - popularity: '流行程度', - reuseCondition: '复用条件', - infectionIntensity: '互惠(传染)需求', - infectionRange: '传染范围', - jurisdiction: '法律管辖', - patentStatement: '专利声明', - patentRetaliation: '专利报复', - enhancedAttribution: '归属增强', - privacyLoophole: '隐私漏洞', - marketingEndorsement: '营销背书', - license_detail: '协议详情', - attitude_positive: '是', - attitude_negative: '否', - range_library: '库', - range_file: '文件', - range_module: '模块', - last_step: '上一步', + '璇ュ伐鍏锋棬鍦ㄥ府鍔╃敤鎴风悊瑙d粬浠嚜宸卞浜庤嚜鐢卞拰寮€婧愯蒋浠惰鍙崗璁殑鍋忓ソ銆傜敤鎴峰繀椤昏嚜宸遍槄璇昏繖浜涜鍙崗璁€傚湪搴旂敤椤圭洰涔嬪墠锛岄槄璇诲苟瀹屽叏鐞嗚В璁稿彲鍗忚闈炲父閲嶈銆傛湰宸ュ叿鍊熺敤鐨勮鍙垎绫绘柟寮忎笉鑳戒繚璇佹案杩滈€傜敤锛屽洜姝わ紝涓嶅彲灏嗘湰宸ュ叿杈撳嚭鐨勪俊鎭綔涓烘硶寰嬩緷鎹€?, + warn_info: '鍒囪锛氬繀椤婚槄璇诲苟鐞嗚В鎮ㄩ€夋嫨鐨勮鍙崗璁?, + filter_option: '绛涢€夋潯浠?, + option_undefined: '涓嶈姹?, + license_score: '璇勫垎', + popularity: '娴佽绋嬪害', + reuseCondition: '澶嶇敤鏉′欢', + infectionIntensity: '浜掓儬锛堜紶鏌擄級闇€姹?, + infectionRange: '浼犳煋鑼冨洿', + jurisdiction: '娉曞緥绠¤緰', + patentStatement: '涓撳埄澹版槑', + patentRetaliation: '涓撳埄鎶ュ', + enhancedAttribution: '褰掑睘澧炲己', + privacyLoophole: '闅愮婕忔礊', + marketingEndorsement: '钀ラ攢鑳屼功', + license_detail: '鍗忚璇︽儏', + attitude_positive: '鏄?, + attitude_negative: '鍚?, + range_library: '搴?, + range_file: '鏂囦欢', + range_module: '妯″潡', + last_step: '涓婁竴姝?, // Signature page - sign: '签名', - generate_key_pair: '生成密钥对', + sign: '绛惧悕', + generate_key_pair: '鐢熸垚瀵嗛挜瀵?, signature_disclaimer: - '本页为公共服务,基于 Web crypto API 提供生成密钥对和签名功能。由于网页浏览器的沙盒环境,生成的私钥仅安全地保存在用户本地,公钥、签名会传给以下第三方网页用于身份验证,请自行确认该网站的安全性。', + '鏈〉涓哄叕鍏辨湇鍔★紝鍩轰簬 Web crypto API 鎻愪緵鐢熸垚瀵嗛挜瀵瑰拰绛惧悕鍔熻兘銆傜敱浜庣綉椤垫祻瑙堝櫒鐨勬矙鐩掔幆澧冿紝鐢熸垚鐨勭閽ヤ粎瀹夊叏鍦颁繚瀛樺湪鐢ㄦ埛鏈湴锛屽叕閽ャ€佺鍚嶄細浼犵粰浠ヤ笅绗笁鏂圭綉椤电敤浜庤韩浠介獙璇侊紝璇疯嚜琛岀‘璁よ缃戠珯鐨勫畨鍏ㄦ€с€?, // Wiki - knowledge_base: '知识库', - contribute_content: '贡献内容', - no_docs_available: '知识库暂无文档。', - docs_auto_load_from_github: '文档将从 GitHub 仓库中自动加载。', - policy: '政策', - creation_date: '成文日期', - publication_date: '发布日期', - edit_on_github: '在 GitHub 编辑', - view_original: '查看原文', - github_document_description: '这是一个基于 GitHub 仓库的文档页面。', - view_or_edit_on_github: '在 GitHub 上查看或编辑此内容', + knowledge_base: '鐭ヨ瘑搴?, + contribute_content: '璐$尞鍐呭', + no_docs_available: '鐭ヨ瘑搴撴殏鏃犳枃妗c€?, + docs_auto_load_from_github: '鏂囨。灏嗕粠 GitHub 浠撳簱涓嚜鍔ㄥ姞杞姐€?, + policy: '鏀跨瓥', + creation_date: '鎴愭枃鏃ユ湡', + publication_date: '鍙戝竷鏃ユ湡', + edit_on_github: '鍦?GitHub 缂栬緫', + view_original: '鏌ョ湅鍘熸枃', + github_document_description: '杩欐槸涓€涓熀浜?GitHub 浠撳簱鐨勬枃妗i〉闈€?, + view_or_edit_on_github: '鍦?GitHub 涓婃煡鐪嬫垨缂栬緫姝ゅ唴瀹?, // Recipe - recipe: '菜谱', - servings: '份数', - preparation_time: '准备时间', + recipe: '鑿滆氨', + servings: '浠芥暟', + preparation_time: '鍑嗗鏃堕棿', // China Public Interest Map - NGO: '公益', - China_NGO_DB: '中国公益数据库', - China_NGO_Map: '中国公益地图', - China_NGO_Landscape: '中国公益生态图', - Open_Source_NGO_plan: '开源公益计划', - landscape: '生态图', + NGO: '鍏泭', + China_NGO_DB: '涓浗鍏泭鏁版嵁搴?, + China_NGO_Map: '涓浗鍏泭鍦板浘', + China_NGO_Landscape: '涓浗鍏泭鐢熸€佸浘', + Open_Source_NGO_plan: '寮€婧愬叕鐩婅鍒?, + landscape: '鐢熸€佸浘', // Chart distribution titles - NGO_area_distribution: 'NGO 地区分布', - NGO_service_distribution: 'NGO 服务分布', - NGO_type_distribution: 'NGO 类型分布', - index_category_broad: '宽基', - index_category_sector: '行业', - index_category_theme: '主题', - index_risk_conservative: '保守', - index_risk_balanced: '稳健', - index_risk_aggressive: '进取', - index_sparkline_60d_label: '近 60 日走势', - data_preparing: '数据准备中', - offline_data: '离线数据', - data_source: '数据源', - index_metric_latest_value: '最新点位', - index_metric_daily_change: '日涨跌', - index_metric_one_year_return: '近 1 年收益', - index_metric_max_drawdown: '最大回撤', - updated_at: '更新于', - view_details: '查看详情 →', + NGO_area_distribution: 'NGO 鍦板尯鍒嗗竷', + NGO_service_distribution: 'NGO 鏈嶅姟鍒嗗竷', + NGO_type_distribution: 'NGO 绫诲瀷鍒嗗竷', + index_category_broad: '瀹藉熀', + index_category_sector: '琛屼笟', + index_category_theme: '涓婚', + index_risk_conservative: '淇濆畧', + index_risk_balanced: '绋冲仴', + index_risk_aggressive: '杩涘彇', + index_sparkline_60d_label: '杩?60 鏃ヨ蛋鍔?, + data_preparing: '鏁版嵁鍑嗗涓?, + offline_data: '绂荤嚎鏁版嵁', + data_source: '鏁版嵁婧?, + index_metric_latest_value: '鏈€鏂扮偣浣?, + index_metric_daily_change: '鏃ユ定璺?, + index_metric_one_year_return: '杩?1 骞存敹鐩?, + index_metric_max_drawdown: '鏈€澶у洖鎾?, + updated_at: '鏇存柊浜?, + view_details: '鏌ョ湅璇︽儏 鈫?, beta: 'Beta', - finance_page_title: '指数基金理财精选', - finance_page_description: '面向小白用户的国内指数基金精选页面,基于 AKShare 数据实时刷新。', - finance_hero_title: '指数基金理财 · 国内优选', + finance_page_title: '鎸囨暟鍩洪噾鐞嗚储绮鹃€?, + finance_page_description: '闈㈠悜灏忕櫧鐢ㄦ埛鐨勫浗鍐呮寚鏁板熀閲戠簿閫夐〉闈紝鍩轰簬 AKShare 鏁版嵁瀹炴椂鍒锋柊銆?, + finance_hero_title: '鎸囨暟鍩洪噾鐞嗚储 路 鍥藉唴浼橀€?, finance_hero_intro: - '基于 AKShare 指数数据构建的国内指数基金精选,帮助小白用户快速理解风险、收益与波动,挑选适合自己的定投组合。', - finance_hero_chip_akshare_data: 'AKShare 指数数据', - finance_hero_chip_realtime_backtest: '实时行情 & 历史回测', - finance_hero_chip_risk_layers: '风险等级分层', - finance_hero_cta_pick: '开始挑选', - finance_hero_cta_guide: '理财小白指南', - finance_hero_stat_coverage_label: '覆盖指数', - finance_hero_stat_coverage_sub: '宽基 + 行业核心指数', - finance_hero_stat_refresh_label: '数据刷新', + '鍩轰簬 AKShare 鎸囨暟鏁版嵁鏋勫缓鐨勫浗鍐呮寚鏁板熀閲戠簿閫夛紝甯姪灏忕櫧鐢ㄦ埛蹇€熺悊瑙i闄┿€佹敹鐩婁笌娉㈠姩锛屾寫閫夐€傚悎鑷繁鐨勫畾鎶曠粍鍚堛€?, + finance_hero_chip_akshare_data: 'AKShare 鎸囨暟鏁版嵁', + finance_hero_chip_realtime_backtest: '瀹炴椂琛屾儏 & 鍘嗗彶鍥炴祴', + finance_hero_chip_risk_layers: '椋庨櫓绛夌骇鍒嗗眰', + finance_hero_cta_pick: '寮€濮嬫寫閫?, + finance_hero_cta_guide: '鐞嗚储灏忕櫧鎸囧崡', + finance_hero_stat_coverage_label: '瑕嗙洊鎸囨暟', + finance_hero_stat_coverage_sub: '瀹藉熀 + 琛屼笟鏍稿績鎸囨暟', + finance_hero_stat_refresh_label: '鏁版嵁鍒锋柊', finance_hero_stat_refresh_value: '60s', - finance_hero_stat_refresh_sub: '实时行情自动更新', - finance_hero_stat_risk_label: '风险提示', + finance_hero_stat_refresh_sub: '瀹炴椂琛屾儏鑷姩鏇存柊', + finance_hero_stat_risk_label: '椋庨櫓鎻愮ず', finance_hero_stat_risk_value: '3', - finance_hero_stat_risk_sub: '保守 · 稳健 · 进取', - finance_filter_title: '快速筛选', - finance_filter_summary_prefix: '根据风险与类别筛选适合的指数基金,所选条件:', - finance_filter_reset: '清空条件', - finance_filter_category_label: '指数类别', - finance_filter_risk_label: '风险等级', - finance_filter_category_suffix: '指数', - finance_filter_risk_suffix: '风险', - finance_filter_category_all: '全部类别', - finance_filter_risk_all: '全部风险', - finance_all: '全部', - finance_filter_risk_all_desc: '不限风险偏好', - finance_filter_risk_conservative_desc: '波动小于 12%', - finance_filter_risk_balanced_desc: '波动 12%-20%', - finance_filter_risk_aggressive_desc: '波动大于 20%', - finance_list_title: '指数基金精选', - finance_list_subtitle_prefix: '展示指数:', - finance_list_subtitle_suffix: ',数据源 AkShare', - finance_list_export_soon: '数据导出(即将上线)', - finance_list_strategy_suggestion: '策略组合建议', - finance_empty_title: '暂无符合条件的指数', - finance_empty_subtitle: '尝试放宽筛选条件,或稍后再试。', - finance_empty_reset_button: '重置筛选', - finance_edu_title: '指数基金三句话', - finance_edu_point_1: '跟踪一篮子股票,成本低、透明度高。', - finance_edu_point_2: '长期定投平滑风险,优先关注宽基指数。', - finance_edu_point_3: '用数据衡量风险:波动、回撤、估值百分位。', - finance_edu_next_steps: '下一步', - finance_edu_next_1: '挑选 2-3 支指数,加入收藏/关注列表。', - finance_edu_next_2: '了解对应的 ETF 或联接基金,关注费率与规模。', - finance_edu_next_3: '设定定投计划并持续跟踪估值、回撤。', + finance_hero_stat_risk_sub: '淇濆畧 路 绋冲仴 路 杩涘彇', + finance_filter_title: '蹇€熺瓫閫?, + finance_filter_summary_prefix: '鏍规嵁椋庨櫓涓庣被鍒瓫閫夐€傚悎鐨勬寚鏁板熀閲戯紝鎵€閫夋潯浠讹細', + finance_filter_reset: '娓呯┖鏉′欢', + finance_filter_category_label: '鎸囨暟绫诲埆', + finance_filter_risk_label: '椋庨櫓绛夌骇', + finance_filter_category_suffix: '鎸囨暟', + finance_filter_risk_suffix: '椋庨櫓', + finance_filter_category_all: '鍏ㄩ儴绫诲埆', + finance_filter_risk_all: '鍏ㄩ儴椋庨櫓', + finance_all: '鍏ㄩ儴', + finance_filter_risk_all_desc: '涓嶉檺椋庨櫓鍋忓ソ', + finance_filter_risk_conservative_desc: '娉㈠姩灏忎簬 12%', + finance_filter_risk_balanced_desc: '娉㈠姩 12%-20%', + finance_filter_risk_aggressive_desc: '娉㈠姩澶т簬 20%', + finance_list_title: '鎸囨暟鍩洪噾绮鹃€?, + finance_list_subtitle_prefix: '灞曠ず鎸囨暟锛?, + finance_list_subtitle_suffix: '锛屾暟鎹簮 AkShare', + finance_list_export_soon: '鏁版嵁瀵煎嚭锛堝嵆灏嗕笂绾匡級', + finance_list_strategy_suggestion: '绛栫暐缁勫悎寤鸿', + finance_empty_title: '鏆傛棤绗﹀悎鏉′欢鐨勬寚鏁?, + finance_empty_subtitle: '灏濊瘯鏀惧绛涢€夋潯浠讹紝鎴栫◢鍚庡啀璇曘€?, + finance_empty_reset_button: '閲嶇疆绛涢€?, + finance_edu_title: '鎸囨暟鍩洪噾涓夊彞璇?, + finance_edu_point_1: '璺熻釜涓€绡瓙鑲$エ锛屾垚鏈綆銆侀€忔槑搴﹂珮銆?, + finance_edu_point_2: '闀挎湡瀹氭姇骞虫粦椋庨櫓锛屼紭鍏堝叧娉ㄥ鍩烘寚鏁般€?, + finance_edu_point_3: '鐢ㄦ暟鎹 閲忛闄╋細娉㈠姩銆佸洖鎾ゃ€佷及鍊肩櫨鍒嗕綅銆?, + finance_edu_next_steps: '涓嬩竴姝?, + finance_edu_next_1: '鎸戦€?2-3 鏀寚鏁帮紝鍔犲叆鏀惰棌/鍏虫敞鍒楄〃銆?, + finance_edu_next_2: '浜嗚В瀵瑰簲鐨?ETF 鎴栬仈鎺ュ熀閲戯紝鍏虫敞璐圭巼涓庤妯°€?, + finance_edu_next_3: '璁惧畾瀹氭姇璁″垝骞舵寔缁窡韪及鍊笺€佸洖鎾ゃ€?, // Hackathon - hackathon_detail: '黑客松详情', - hackathon_highlights: '赛道方向', + hackathon_detail: '榛戝鏉捐鎯?, + hackathon_highlights: '璧涢亾鏂瑰悜', hackathon_highlights_subtitle: 'Theme & Tracks', - event_description: '活动描述', - event_location: '活动地点', - event_duration: '活动时间', - main_visual: '主视觉', - countdown_days: '天', - countdown_hours: '时', - countdown_minutes: '分', - countdown_seconds: '秒', - product_submission: '产品提交', - agenda: '日程安排', - hackathon_participant_registration: '参与者登记', + event_description: '娲诲姩鎻忚堪', + event_location: '娲诲姩鍦扮偣', + event_duration: '娲诲姩鏃堕棿', + main_visual: '涓昏瑙?, + countdown_days: '澶?, + countdown_hours: '鏃?, + countdown_minutes: '鍒?, + countdown_seconds: '绉?, + product_submission: '浜у搧鎻愪氦', + agenda: '鏃ョ▼瀹夋帓', + hackathon_participant_registration: '鍙備笌鑰呯櫥璁?, hackathon_participant_registration_description: - '收集报名成员、建立参赛者池,并为后续组队和通知打底。', - hackathon_team_lead: '队长', - hackathon_project_registration: '项目注册', + '鏀堕泦鎶ュ悕鎴愬憳銆佸缓绔嬪弬璧涜€呮睜锛屽苟涓哄悗缁粍闃熷拰閫氱煡鎵撳簳銆?, + hackathon_team_lead: '闃熼暱', + hackathon_project_registration: '椤圭洰娉ㄥ唽', hackathon_project_registration_description: - '登记项目名称、成员、赛道和一句话介绍,完成队伍锁定。', - hackathon_submission: '提交', - hackathon_product_submission_description: '比赛截止前统一提交最终作品、演示链接和补充说明。', - hackathon_review: '评审', - hackathon_evaluation_entry: '评审入口', - hackathon_evaluation_entry_description: '评委或导师在评审阶段使用,用于评分、复核与结果整理。', + '鐧昏椤圭洰鍚嶇О銆佹垚鍛樸€佽禌閬撳拰涓€鍙ヨ瘽浠嬬粛锛屽畬鎴愰槦浼嶉攣瀹氥€?, + hackathon_submission: '鎻愪氦', + hackathon_product_submission_description: '姣旇禌鎴鍓嶇粺涓€鎻愪氦鏈€缁堜綔鍝併€佹紨绀洪摼鎺ュ拰琛ュ厖璇存槑銆?, + hackathon_review: '璇勫', + hackathon_evaluation_entry: '璇勫鍏ュ彛', + hackathon_evaluation_entry_description: '璇勫鎴栧甯堝湪璇勫闃舵浣跨敤锛岀敤浜庤瘎鍒嗐€佸鏍镐笌缁撴灉鏁寸悊銆?, hackathon_event_schedule: 'EVENT SCHEDULE', - common_questions: '常见问题', + common_questions: '甯歌闂', hackathon_faq_subtitle: 'FAQ', - hackathon_faq_registration_question: '应该从哪个入口开始?', - hackathon_faq_registration_answer_prefix: '优先使用当前开放的入口:', - hackathon_faq_schedule_question: '活动节奏怎么安排?', - hackathon_faq_location_question: '活动在哪里进行?', - hackathon_faq_resources_question: '现场能提供哪些资源?', - hackathon_faq_submission_question: '提交或后续流程从哪里进入?', - hackathon_faq_submission_answer_prefix: '后续阶段可继续使用:', - hackathon_people_showcase: '参与者社区', + hackathon_faq_registration_question: '搴旇浠庡摢涓叆鍙e紑濮嬶紵', + hackathon_faq_registration_answer_prefix: '浼樺厛浣跨敤褰撳墠寮€鏀剧殑鍏ュ彛锛?, + hackathon_faq_schedule_question: '娲诲姩鑺傚鎬庝箞瀹夋帓锛?, + hackathon_faq_location_question: '娲诲姩鍦ㄥ摢閲岃繘琛岋紵', + hackathon_faq_resources_question: '鐜板満鑳芥彁渚涘摢浜涜祫婧愶紵', + hackathon_faq_submission_question: '鎻愪氦鎴栧悗缁祦绋嬩粠鍝噷杩涘叆锛?, + hackathon_faq_submission_answer_prefix: '鍚庣画闃舵鍙户缁娇鐢細', + hackathon_people_showcase: '鍙備笌鑰呯ぞ鍖?, hackathon_people_showcase_subtitle: 'Contributors & GitHub Profiles', - hackathon_resource_zone: '资源与项目', + hackathon_resource_zone: '璧勬簮涓庨」鐩?, hackathon_resource_zone_subtitle: 'Templates, repositories and submitted work', - hackathon_show_more: '展开更多', - hackathon_show_less: '收起内容', - hackathon_register_now: '立即报名', - hackathon_judging_title: '评审标准 · Judging Criteria', - hackathon_support_action: '通过组织方联系', - hackathon_criteria_innovation_title: '创新性 Innovation', - hackathon_criteria_innovation_desc: '想法有新意,能针对真实问题给出明确方案。', - hackathon_criteria_technical_title: '技术深度 Technical Depth', - hackathon_criteria_technical_desc: 'AI 能力是否被有效运用,并形成技术壁垒。', - hackathon_criteria_completion_title: '完成度 Completion', - hackathon_criteria_completion_desc: '作品是否可运行、可演示,主路径是否完整。', - hackathon_criteria_presentation_title: '表达与设计 Presentation', - hackathon_criteria_presentation_desc: '叙事清晰,交互流畅,整体体验具有说服力。', - hackathon_action_hub: '入口中心 · 表单', - hackathon_entry_flow: '报名与提交流程', + hackathon_show_more: '灞曞紑鏇村', + hackathon_show_less: '鏀惰捣鍐呭', + hackathon_register_now: '绔嬪嵆鎶ュ悕', + hackathon_judging_title: '璇勫鏍囧噯 路 Judging Criteria', + hackathon_support_action: '閫氳繃缁勭粐鏂硅仈绯?, + hackathon_criteria_innovation_title: '鍒涙柊鎬?Innovation', + hackathon_criteria_innovation_desc: '鎯虫硶鏈夋柊鎰忥紝鑳介拡瀵圭湡瀹為棶棰樼粰鍑烘槑纭柟妗堛€?, + hackathon_criteria_technical_title: '鎶€鏈繁搴?Technical Depth', + hackathon_criteria_technical_desc: 'AI 鑳藉姏鏄惁琚湁鏁堣繍鐢紝骞跺舰鎴愭妧鏈鍨掋€?, + hackathon_criteria_completion_title: '瀹屾垚搴?Completion', + hackathon_criteria_completion_desc: '浣滃搧鏄惁鍙繍琛屻€佸彲婕旂ず锛屼富璺緞鏄惁瀹屾暣銆?, + hackathon_criteria_presentation_title: '琛ㄨ揪涓庤璁?Presentation', + hackathon_criteria_presentation_desc: '鍙欎簨娓呮櫚锛屼氦浜掓祦鐣咃紝鏁翠綋浣撻獙鍏锋湁璇存湇鍔涖€?, + hackathon_action_hub: '鍏ュ彛涓績 路 琛ㄥ崟', + hackathon_entry_flow: '鎶ュ悕涓庢彁浜ゆ祦绋?, hackathon_entry_flow_description: - '入口根据活动当前配置自动生成。不同活动可以复用同一套页面结构,而不是为每次活动单开专页。', - hackathon_phase: '阶段', - hackathon_schedule_window_label: '窗口', - hackathon_schedule_reason_label: '原因', - hackathon_schedule_focus_label: '重点', - hackathon_schedule_goal_label: '阶段目标', - hackathon_schedule_reason_meta: '节奏设计', - hackathon_schedule_focus_meta: '执行重点', - hackathon_schedule_reason_enrollment: '提前预热并集中拉新,保证组队前有足够候选参与者。', - hackathon_schedule_reason_formation: '压缩组队窗口,促进快速决策,避免长期摇摆。', - hackathon_schedule_reason_competition: '限定冲刺周期,聚焦可演示成果而非无限扩展。', - hackathon_schedule_reason_evaluation: '留出独立评审时间,保证打分与复核质量。', - hackathon_schedule_reason_default: '根据当前活动阶段安排关键动作,确保节奏可执行。', - hackathon_schedule_focus_enrollment: '完成队员登记并进入社群,尽快匹配潜在队友。', - hackathon_schedule_focus_formation: '明确题目、锁定成员和分工,快速形成稳定队伍。', - hackathon_schedule_focus_competition: '提交可运行 Demo、仓库与核心说明,保证主路径完整。', - hackathon_schedule_focus_evaluation: '围绕评审标准完成评分、复核并准备展示名单。', - hackathon_schedule_focus_default: '围绕阶段核心任务推进,优先完成关键交付。', - hackathon_schedule_goal_enrollment: '把参与者池建立起来,为后续组队和比赛提供质量基础。', - hackathon_schedule_goal_formation: '在短周期内完成组队闭环,让队伍进入可执行状态。', - hackathon_schedule_goal_competition: '产出可演示、可复现的作品并按时提交。', - hackathon_schedule_goal_evaluation: '形成稳定评审结果并完成 Demo Day 前置准备。', - hackathon_schedule_goal_default: '确保当前阶段目标清晰、动作闭环并可按时交付。', - participants: '参与者', - organizations: '组织方', - prizes: '奖项', - hackathon_prizes: '黑客松奖项', - templates: '项目模板', - projects: '参赛项目', - workshop: '工作坊', - enrollment: '报名中', - formation: '组队', - competition: '比赛', - evaluation: '评审', - presentation: '展示', - coding: '编程', - break: '休息', - ceremony: '仪式', - members: '成员', - sponsor: '赞助商', - price: '奖金', - amount: '数量', - source_code: '源代码', - preview: '预览', - created_by: '创建者', - products: '产品', - score: '评分', + '鍏ュ彛鏍规嵁娲诲姩褰撳墠閰嶇疆鑷姩鐢熸垚銆備笉鍚屾椿鍔ㄥ彲浠ュ鐢ㄥ悓涓€濂楅〉闈㈢粨鏋勶紝鑰屼笉鏄负姣忔娲诲姩鍗曞紑涓撻〉銆?, + hackathon_phase: '闃舵', + hackathon_schedule_window_label: '绐楀彛', + hackathon_schedule_reason_label: '鍘熷洜', + hackathon_schedule_focus_label: '閲嶇偣', + hackathon_schedule_goal_label: '闃舵鐩爣', + hackathon_schedule_reason_meta: '鑺傚璁捐', + hackathon_schedule_focus_meta: '鎵ц閲嶇偣', + hackathon_schedule_reason_enrollment: '鎻愬墠棰勭儹骞堕泦涓媺鏂帮紝淇濊瘉缁勯槦鍓嶆湁瓒冲鍊欓€夊弬涓庤€呫€?, + hackathon_schedule_reason_formation: '鍘嬬缉缁勯槦绐楀彛锛屼績杩涘揩閫熷喅绛栵紝閬垮厤闀挎湡鎽囨憜銆?, + hackathon_schedule_reason_competition: '闄愬畾鍐插埡鍛ㄦ湡锛岃仛鐒﹀彲婕旂ず鎴愭灉鑰岄潪鏃犻檺鎵╁睍銆?, + hackathon_schedule_reason_evaluation: '鐣欏嚭鐙珛璇勫鏃堕棿锛屼繚璇佹墦鍒嗕笌澶嶆牳璐ㄩ噺銆?, + hackathon_schedule_reason_default: '鏍规嵁褰撳墠娲诲姩闃舵瀹夋帓鍏抽敭鍔ㄤ綔锛岀‘淇濊妭濂忓彲鎵ц銆?, + hackathon_schedule_focus_enrollment: '瀹屾垚闃熷憳鐧昏骞惰繘鍏ョぞ缇わ紝灏藉揩鍖归厤娼滃湪闃熷弸銆?, + hackathon_schedule_focus_formation: '鏄庣‘棰樼洰銆侀攣瀹氭垚鍛樺拰鍒嗗伐锛屽揩閫熷舰鎴愮ǔ瀹氶槦浼嶃€?, + hackathon_schedule_focus_competition: '鎻愪氦鍙繍琛?Demo銆佷粨搴撲笌鏍稿績璇存槑锛屼繚璇佷富璺緞瀹屾暣銆?, + hackathon_schedule_focus_evaluation: '鍥寸粫璇勫鏍囧噯瀹屾垚璇勫垎銆佸鏍稿苟鍑嗗灞曠ず鍚嶅崟銆?, + hackathon_schedule_focus_default: '鍥寸粫闃舵鏍稿績浠诲姟鎺ㄨ繘锛屼紭鍏堝畬鎴愬叧閿氦浠樸€?, + hackathon_schedule_goal_enrollment: '鎶婂弬涓庤€呮睜寤虹珛璧锋潵锛屼负鍚庣画缁勯槦鍜屾瘮璧涙彁渚涜川閲忓熀纭€銆?, + hackathon_schedule_goal_formation: '鍦ㄧ煭鍛ㄦ湡鍐呭畬鎴愮粍闃熼棴鐜紝璁╅槦浼嶈繘鍏ュ彲鎵ц鐘舵€併€?, + hackathon_schedule_goal_competition: '浜у嚭鍙紨绀恒€佸彲澶嶇幇鐨勪綔鍝佸苟鎸夋椂鎻愪氦銆?, + hackathon_schedule_goal_evaluation: '褰㈡垚绋冲畾璇勫缁撴灉骞跺畬鎴?Demo Day 鍓嶇疆鍑嗗銆?, + hackathon_schedule_goal_default: '纭繚褰撳墠闃舵鐩爣娓呮櫚銆佸姩浣滈棴鐜苟鍙寜鏃朵氦浠樸€?, + participants: '鍙備笌鑰?, + organizations: '缁勭粐鏂?, + prizes: '濂栭」', + hackathon_prizes: '榛戝鏉惧椤?, + templates: '椤圭洰妯℃澘', + projects: '鍙傝禌椤圭洰', + workshop: '宸ヤ綔鍧?, + enrollment: '鎶ュ悕涓?, + formation: '缁勯槦', + competition: '姣旇禌', + evaluation: '璇勫', + presentation: '灞曠ず', + coding: '缂栫▼', + break: '浼戞伅', + ceremony: '浠紡', + members: '鎴愬憳', + sponsor: '璧炲姪鍟?, + price: '濂栭噾', + amount: '鏁伴噺', + source_code: '婧愪唬鐮?, + preview: '棰勮', + created_by: '鍒涘缓鑰?, + products: '浜у搧', + score: '璇勫垎', // Team detail page - hackathon_team_showcase: '团队展示', - team_members: '团队成员', - team_works: '团队作品', - no_news_yet: '暂无动态', + hackathon_team_showcase: '鍥㈤槦灞曠ず', + team_members: '鍥㈤槦鎴愬憳', + team_works: '鍥㈤槦浣滃搧', + no_news_yet: '鏆傛棤鍔ㄦ€?, + // Open Library + open_library: '开源图书馆', + open_library_description: '浏览开源与技术类图书,支持借阅与共享', + book_catalog: '图书目录', + search_books_placeholder: '搜索书名、作者或标签…', + library_category_all: '全部分类', + library_category_open_source: '开源', + library_category_programming: '编程', + library_category_community: '社区', + library_category_design: '设计', + library_category_business: '商业', + library_status_all: '全部状态', + library_status_available: '可借', + library_status_borrowed: '已借出', + view_details: '查看详情', + back_to_library: '返回图书馆', + no_books_found: '未找到匹配的图书', + book_details: '图书信息', + publisher: '出版社', + year: '年份', + pages: '页数', + language: '语言', + category: '分类', + borrowing_info: '借阅信息', + borrower: '借阅人', + borrow_date: '借阅日期', + expected_return_date: '预计归还日期', + borrowing_guide: '借阅指南', + borrowing_guide_step1: '在图书目录中选择您感兴趣的图书', + borrowing_guide_step2: '查看图书详情,确认可借状态', + borrowing_guide_step3: '联系开源市集管理员提交借阅申请', + borrowing_guide_step4: '管理员确认后,到指定地点领取图书', + borrowing_guide_step5: '请在约定时间内归还,方便他人借阅', }; diff --git a/translation/zh-TW.ts b/translation/zh-TW.ts index a657e06..be1c0e8 100644 --- a/translation/zh-TW.ts +++ b/translation/zh-TW.ts @@ -1,318 +1,351 @@ export default { // Navigation - open_source_bazaar: '開源市集', - about: '關於', - history: '歷史', - code_of_conduct: '行為規範', - join_us: '參與', - open_collaborator_award: '開放協作人獎', - open_source_projects: '開源項目', - self_developed_projects: '自研項目', - bazaar_projects: '市集項目', - activity: '活動', - hackathon: '黑客馬拉松', - bounty: '開源懸賞', - home_page: '主頁', - wiki: '知識庫', + open_source_bazaar: '闁嬫簮甯傞泦', + about: '闂滄柤', + history: '姝峰彶', + code_of_conduct: '琛岀偤瑕忕瘎', + join_us: '鍙冭垏', + open_collaborator_award: '闁嬫斁鍗斾綔浜虹崕', + open_source_projects: '闁嬫簮闋呯洰', + self_developed_projects: '鑷爺闋呯洰', + bazaar_projects: '甯傞泦闋呯洰', + activity: '娲诲嫊', + hackathon: '榛戝棣媺鏉?, + bounty: '闁嬫簮鎳歌碁', + home_page: '涓婚爜', + wiki: '鐭ヨ瓨搴?, // Search - keywords: '關鍵詞', - search_results: '搜尋結果', - breadcrumb: '麵包屑導覽', + keywords: '闂滈嵉瑭?, + search_results: '鎼滃皨绲愭灉', + breadcrumb: '楹靛寘灞戝皫瑕?, // Scroll List - load_more: '加載更多……', - no_more: '沒有更多', + load_more: '鍔犺級鏇村鈥︹€?, + no_more: '娌掓湁鏇村', // Home page sections - participate: '參與', - code_work: '代碼工作', - non_code_work: '非代碼工作', - action: '行動', - we_are_organizing_bazaar: '我們正在籌辦 3 月開源市集,歡迎參與!', - welcome_open_collaboration: '歡迎參與', - open_collaboration: '開放式協作', + participate: '鍙冭垏', + code_work: '浠g⒓宸ヤ綔', + non_code_work: '闈炰唬纰煎伐浣?, + action: '琛屽嫊', + we_are_organizing_bazaar: '鎴戝€戞鍦ㄧ睂杈?3 鏈堥枊婧愬競闆嗭紝姝¤繋鍙冭垏锛?, + welcome_open_collaboration: '姝¤繋鍙冭垏', + open_collaboration: '闁嬫斁寮忓崝浣?, // Volunteer page - volunteer: '志工', - online_volunteer: '線上志工', + volunteer: '蹇楀伐', + online_volunteer: '绶氫笂蹇楀伐', // Bounty page - bounty_page_title: '開源懸賞', - bounty_page_description: '參與開源項目,獲得懸賞獎勵', - bounty_dashboard: '儀表板', - bounty_token_rank: '代幣榜', - bounty_task_rank: '任務榜', - bounty_task_submission: '任務發布表單', - bounty_achievement_rank: '成果榜', - bounty_achievement_submission: '成果提交表單', - bounty_hero_rank: '英雄榜', - bounty_debt_rank: '欠條榜', + bounty_page_title: '闁嬫簮鎳歌碁', + bounty_page_description: '鍙冭垏闁嬫簮闋呯洰锛岀嵅寰楁嚫璩炵崕鍕?, + bounty_dashboard: '鍎€琛ㄦ澘', + bounty_token_rank: '浠e梗姒?, + bounty_task_rank: '浠诲嫏姒?, + bounty_task_submission: '浠诲嫏鐧煎竷琛ㄥ柈', + bounty_achievement_rank: '鎴愭灉姒?, + bounty_achievement_submission: '鎴愭灉鎻愪氦琛ㄥ柈', + bounty_hero_rank: '鑻遍泟姒?, + bounty_debt_rank: '娆犳姒?, //License-tool Page - license_filter: '開源許可證選擇器', - feature_attitude_undefined: '我不在乎', - feature_attitude_positive: '我需要', - feature_attitude_negative: '我不需要', - infection_range_library: '傳染範圍到庫', - infection_range_file: '傳染範圍到檔案', - infection_range_module: '傳染範圍到模組', - infection_range_undefined: '不要求', + license_filter: '闁嬫簮瑷卞彲璀夐伕鎿囧櫒', + feature_attitude_undefined: '鎴戜笉鍦ㄤ箮', + feature_attitude_positive: '鎴戦渶瑕?, + feature_attitude_negative: '鎴戜笉闇€瑕?, + infection_range_library: '鍌虫煋绡勫湇鍒板韩', + infection_range_file: '鍌虫煋绡勫湇鍒版獢妗?, + infection_range_module: '鍌虫煋绡勫湇鍒版ā绲?, + infection_range_undefined: '涓嶈姹?, tip_popularity_0: - '您是否希望將結果限制在開放原始碼促進會(Open Source Initiative, 縮寫: OSI)所描述的 "流行、廣泛使用或擁有強大社群」 的授權上?', - tip_popularity_1: '這將以犧牲一些更冷僻但或許有用的特徵為代價來確保該許可協議成為“主流”協議。', + '鎮ㄦ槸鍚﹀笇鏈涘皣绲愭灉闄愬埗鍦ㄩ枊鏀惧師濮嬬⒓淇冮€叉渻锛圤pen Source Initiative, 绺: OSI锛夋墍鎻忚堪鐨?"娴佽銆佸唬娉涗娇鐢ㄦ垨鎿佹湁寮峰ぇ绀剧兢銆?鐨勬巿娆婁笂锛?, + tip_popularity_1: '閫欏皣浠ョ姧鐗蹭竴浜涙洿鍐峰兓浣嗘垨瑷辨湁鐢ㄧ殑鐗瑰镜鐐轰唬鍍逛締纰轰繚瑭茶ū鍙崝璀版垚鐐衡€滀富娴佲€濆崝璀般€?, tip_reuse_condition: - '您想對程式碼的重複使用設定許可條件嗎? 如果沒有,您的許可證將屬於所謂的 "寬鬆 (Permissive) " 許可證。 所有自由與開源許可證都允許他人對您的程式碼進行修改,並將這些修改後的版本提供給他人。 您的許可證可以對如何實現這一點提出條件,特別是在這些修改版本上可以使用哪些許可證。 這些條件有助於保持程式碼的自由性,但也會使一些人不再重複使用您的程式碼。', + '鎮ㄦ兂灏嶇▼寮忕⒓鐨勯噸瑜囦娇鐢ㄨō瀹氳ū鍙浠跺棊? 濡傛灉娌掓湁锛屾偍鐨勮ū鍙瓑灏囧爆鏂兼墍璎傜殑 "瀵瑔 (Permissive) " 瑷卞彲璀夈€?鎵€鏈夎嚜鐢辫垏闁嬫簮瑷卞彲璀夐兘鍏佽ū浠栦汉灏嶆偍鐨勭▼寮忕⒓閫茶淇敼锛屼甫灏囬€欎簺淇敼寰岀殑鐗堟湰鎻愪緵绲︿粬浜恒€?鎮ㄧ殑瑷卞彲璀夊彲浠ュ皪濡備綍瀵︾従閫欎竴榛炴彁鍑烘浠讹紝鐗瑰垾鏄湪閫欎簺淇敼鐗堟湰涓婂彲浠ヤ娇鐢ㄥ摢浜涜ū鍙瓑銆?閫欎簺姊濅欢鏈夊姪鏂间繚鎸佺▼寮忕⒓鐨勮嚜鐢辨€э紝浣嗕篃鏈冧娇涓€浜涗汉涓嶅啀閲嶈浣跨敤鎮ㄧ殑绋嬪紡纰笺€?, tip_infection_intensity: - '您是否想選擇強互惠(強傳染)的協議? 當您選擇強互惠(強傳染)許可證時,任何使用、修改或分發您的程式碼的人都必須遵循相同的授權要求。 這意味著他們必須提供原始程式碼,並將其程式碼以相同的許可證發布。 這樣,您的程式碼的開放性將被保護,並且任何人都可以獲得您的程式碼的原始程式碼,以便進行學習、改進和共享。 強互惠(強傳染)許可證確保了對整個專案的開放性和共享性,促進了開源社群的合作和創新。 但是,選擇強互惠(強傳染)許可證可能會對某些開發者或組織造成限制。', - tip_jurisdiction: '您是否想將自己所在區域作為司法管轄區', - tip_patent_statement: '您是否想使用明確授予專利權的許可協議(如果有)', + '鎮ㄦ槸鍚︽兂閬告搰寮蜂簰鎯狅紙寮峰偝鏌擄級鐨勫崝璀帮紵 鐣舵偍閬告搰寮蜂簰鎯狅紙寮峰偝鏌擄級瑷卞彲璀夋檪锛屼换浣曚娇鐢ㄣ€佷慨鏀规垨鍒嗙櫦鎮ㄧ殑绋嬪紡纰肩殑浜洪兘蹇呴爤閬靛惊鐩稿悓鐨勬巿娆婅姹傘€?閫欐剰鍛宠憲浠栧€戝繀闋堟彁渚涘師濮嬬▼寮忕⒓锛屼甫灏囧叾绋嬪紡纰间互鐩稿悓鐨勮ū鍙瓑鐧煎竷銆?閫欐ǎ锛屾偍鐨勭▼寮忕⒓鐨勯枊鏀炬€у皣琚繚璀凤紝涓︿笖浠讳綍浜洪兘鍙互鐛插緱鎮ㄧ殑绋嬪紡纰肩殑鍘熷绋嬪紡纰硷紝浠ヤ究閫茶瀛哥繏銆佹敼閫插拰鍏变韩銆?寮蜂簰鎯狅紙寮峰偝鏌擄級瑷卞彲璀夌⒑淇濅簡灏嶆暣鍊嬪皥妗堢殑闁嬫斁鎬у拰鍏变韩鎬э紝淇冮€蹭簡闁嬫簮绀剧兢鐨勫悎浣滃拰鍓垫柊銆?浣嗘槸锛岄伕鎿囧挤浜掓儬锛堝挤鍌虫煋锛夎ū鍙瓑鍙兘鏈冨皪鏌愪簺闁嬬櫦鑰呮垨绲勭箶閫犳垚闄愬埗銆?, + tip_jurisdiction: '鎮ㄦ槸鍚︽兂灏囪嚜宸辨墍鍦ㄥ崁鍩熶綔鐐哄徃娉曠杞勫崁', + tip_patent_statement: '鎮ㄦ槸鍚︽兂浣跨敤鏄庣⒑鎺堜簣灏堝埄娆婄殑瑷卞彲鍗旇锛堝鏋滄湁锛?, tip_patent_retaliation: - '您是否想使用包含專利報復條款的授權協議。 如果有人提起訴訟,聲稱開源軟體侵犯了他們的軟體專利,該條款將觸發一種反制措施。 根據這種條款,原告將失去使用、複製、改編和分發開源軟體的許可。 這意味著如果某人發起專利訴訟,他們將無法繼續使用和分發被授權的開源程式碼。 它旨在保護開源專案和貢獻者免受專利訴訟的侵害,以維護專案的自由和開放性。', + '鎮ㄦ槸鍚︽兂浣跨敤鍖呭惈灏堝埄鍫卞京姊濇鐨勬巿娆婂崝璀般€?濡傛灉鏈変汉鎻愯捣瑷磋锛岃伈绋遍枊婧愯粺楂斾镜鐘簡浠栧€戠殑杌熼珨灏堝埄锛岃┎姊濇灏囪Ц鐧间竴绋弽鍒舵帾鏂姐€?鏍规摎閫欑ó姊濇锛屽師鍛婂皣澶卞幓浣跨敤銆佽瑁姐€佹敼绶ㄥ拰鍒嗙櫦闁嬫簮杌熼珨鐨勮ū鍙€?閫欐剰鍛宠憲濡傛灉鏌愪汉鐧艰捣灏堝埄瑷磋锛屼粬鍊戝皣鐒℃硶绻肩簩浣跨敤鍜屽垎鐧艰鎺堟瑠鐨勯枊婧愮▼寮忕⒓銆?瀹冩棬鍦ㄤ繚璀烽枊婧愬皥妗堝拰璨㈢嵒鑰呭厤鍙楀皥鍒╄ù瑷熺殑渚靛锛屼互缍灏堟鐨勮嚜鐢卞拰闁嬫斁鎬с€?, tip_enhanced_attribution: - '您是否想使用指定「軟體歸屬增強」的授權協議,必須以特定形式在特定情況下註明出處,例如每次執行軟體時都必須在軟體的使用者介面上註明出處。 所有自由或開源軟體授權都規定,分發或改編軟體的任何人都必須在其分發的某處註明軟體原作者。', + '鎮ㄦ槸鍚︽兂浣跨敤鎸囧畾銆岃粺楂旀灞寮枫€嶇殑鎺堟瑠鍗旇锛屽繀闋堜互鐗瑰畾褰㈠紡鍦ㄧ壒瀹氭儏娉佷笅瑷绘槑鍑鸿檿锛屼緥濡傛瘡娆″煼琛岃粺楂旀檪閮藉繀闋堝湪杌熼珨鐨勪娇鐢ㄨ€呬粙闈笂瑷绘槑鍑鸿檿銆?鎵€鏈夎嚜鐢辨垨闁嬫簮杌熼珨鎺堟瑠閮借瀹氾紝鍒嗙櫦鎴栨敼绶ㄨ粺楂旂殑浠讳綍浜洪兘蹇呴爤鍦ㄥ叾鍒嗙櫦鐨勬煇铏曡ɑ鏄庤粺楂斿師浣滆€呫€?, tip_privacy_loophole: - '您是否想使用解決「隱私漏洞」的許可協議,要求在透過網路提供服務或在內部部署程式碼時也必須發佈原始程式碼。 這樣做的目的是確保所有從開源專案中受益的人都有責任回饋社區,分享他們的改進和改編版本。', + '鎮ㄦ槸鍚︽兂浣跨敤瑙f焙銆岄毐绉佹紡娲炪€嶇殑瑷卞彲鍗旇锛岃姹傚湪閫忛亷缍茶矾鎻愪緵鏈嶅嫏鎴栧湪鍏ч儴閮ㄧ讲绋嬪紡纰兼檪涔熷繀闋堢櫦浣堝師濮嬬▼寮忕⒓銆?閫欐ǎ鍋氱殑鐩殑鏄⒑淇濇墍鏈夊緸闁嬫簮灏堟涓彈鐩婄殑浜洪兘鏈夎铂浠诲洖楗嬬ぞ鍗€锛屽垎浜粬鍊戠殑鏀归€插拰鏀圭法鐗堟湰銆?, tip_marketing_endorsement: - '您是否想使用禁止推廣的授權協議,避免使用作者的姓名來推廣基於作者代碼的產品或服務。 這樣的限制,是為了保護作者的聲譽或防止誤導性宣傳。', + '鎮ㄦ槸鍚︽兂浣跨敤绂佹鎺ㄥ唬鐨勬巿娆婂崝璀帮紝閬垮厤浣跨敤浣滆€呯殑濮撳悕渚嗘帹寤e熀鏂间綔鑰呬唬纰肩殑鐢㈠搧鎴栨湇鍕欍€?閫欐ǎ鐨勯檺鍒讹紝鏄偤浜嗕繚璀蜂綔鑰呯殑鑱茶鎴栭槻姝㈣灏庢€у鍌炽€?, tip_infection_range: - '您想對修改版的哪些部分可以適用其它許可協議,有 模組級,文件級,庫接口級,不進行要求四個選擇', + '鎮ㄦ兂灏嶄慨鏀圭増鐨勫摢浜涢儴鍒嗗彲浠ラ仼鐢ㄥ叾瀹冭ū鍙崝璀?鏈?妯$祫绱氾紝鏂囦欢绱氾紝搴帴鍙g礆锛屼笉閫茶瑕佹眰鍥涘€嬮伕鎿?, - license_tool_headline: '開源許可證選擇器', + license_tool_headline: '闁嬫簮瑷卞彲璀夐伕鎿囧櫒', license_tool_description: - '該工具旨在幫助用戶理解他們自己對於自由和開源軟件許可協議的偏好。用戶必須自己閱讀這些許可協議。在將許可協議適用於您的項目之前,閱讀並完全理解您選擇的許可協議是非常重要的。支撐該工具運行的許可類型分類,會不可避免地有些縮減。因此,不能也切不可將該工具的輸出信息視爲法律意見。', - warn_info: '切記:必須閱讀並理解您選擇的許可協議', - filter_option: '篩選條件', - option_undefined: '不要求', - license_score: '評分', - popularity: '流行程度', - reuseCondition: '復用條件', - infectionIntensity: '互惠(傳染)需求', - infectionRange: '傳染範圍', - jurisdiction: '法律管轄', - patentStatement: '專利聲明', - patentRetaliation: '專利報復', - enhancedAttribution: '歸屬增強', - privacyLoophole: '隱私漏洞', - marketingEndorsement: '營銷背書', - license_detail: '協議詳情', - attitude_positive: '是', - attitude_negative: '否', - range_library: '庫', - range_file: '檔案', - range_module: '模組', - last_step: '上一步', + '瑭插伐鍏锋棬鍦ㄥ公鍔╃敤鎴剁悊瑙d粬鍊戣嚜宸卞皪鏂艰嚜鐢卞拰闁嬫簮杌熶欢瑷卞彲鍗旇鐨勫亸濂姐€傜敤鎴跺繀闋堣嚜宸遍柋璁€閫欎簺瑷卞彲鍗旇銆傚湪灏囪ū鍙崝璀伴仼鐢ㄦ柤鎮ㄧ殑闋呯洰涔嬪墠锛岄柋璁€涓﹀畬鍏ㄧ悊瑙f偍閬告搰鐨勮ū鍙崝璀版槸闈炲父閲嶈鐨勩€傛敮鎾愯┎宸ュ叿閬嬭鐨勮ū鍙鍨嬪垎椤烇紝鏈冧笉鍙伩鍏嶅湴鏈変簺绺笡銆傚洜姝わ紝涓嶈兘涔熷垏涓嶅彲灏囪┎宸ュ叿鐨勮几鍑轰俊鎭鐖叉硶寰嬫剰瑕嬨€?, + warn_info: '鍒囪锛氬繀闋堥柋璁€涓︾悊瑙f偍閬告搰鐨勮ū鍙崝璀?, + filter_option: '绡╅伕姊濅欢', + option_undefined: '涓嶈姹?, + license_score: '瑭曞垎', + popularity: '娴佽绋嬪害', + reuseCondition: '寰╃敤姊濅欢', + infectionIntensity: '浜掓儬锛堝偝鏌擄級闇€姹?, + infectionRange: '鍌虫煋绡勫湇', + jurisdiction: '娉曞緥绠¤絼', + patentStatement: '灏堝埄鑱叉槑', + patentRetaliation: '灏堝埄鍫卞京', + enhancedAttribution: '姝稿爆澧炲挤', + privacyLoophole: '闅辩婕忔礊', + marketingEndorsement: '鐕熼姺鑳屾浉', + license_detail: '鍗旇瑭虫儏', + attitude_positive: '鏄?, + attitude_negative: '鍚?, + range_library: '搴?, + range_file: '妾旀', + range_module: '妯$祫', + last_step: '涓婁竴姝?, // Signature page - sign: '簽名', - generate_key_pair: '生成密鑰對', + sign: '绨藉悕', + generate_key_pair: '鐢熸垚瀵嗛懓灏?, signature_disclaimer: - '本頁為公共服務,基於 Web crypto API 提供生成密鑰對和簽名功能。由於網頁瀏覽器的沙盒環境,生成的私鑰僅安全地保存在用戶本地,公鑰、簽名會傳給以下第三方網頁用於身份驗證,請自行確認該網站的安全性。', + '鏈爜鐐哄叕鍏辨湇鍕欙紝鍩烘柤 Web crypto API 鎻愪緵鐢熸垚瀵嗛懓灏嶅拰绨藉悕鍔熻兘銆傜敱鏂肩恫闋佺€忚鍣ㄧ殑娌欑洅鐠板锛岀敓鎴愮殑绉侀懓鍍呭畨鍏ㄥ湴淇濆瓨鍦ㄧ敤鎴舵湰鍦帮紝鍏懓銆佺敖鍚嶆渻鍌崇郸浠ヤ笅绗笁鏂圭恫闋佺敤鏂艰韩浠介璀夛紝璜嬭嚜琛岀⒑瑾嶈┎缍茬珯鐨勫畨鍏ㄦ€с€?, // Wiki - knowledge_base: '知識庫', - contribute_content: '貢獻內容', - no_docs_available: '知識庫暫無文檔。', - docs_auto_load_from_github: '文檔將從 GitHub 存儲庫中自動加載。', - policy: '政策', - creation_date: '成文日期', - publication_date: '發佈日期', - edit_on_github: '在 GitHub 編輯', - view_original: '查看原文', - github_document_description: '這是一個基於 GitHub 存儲庫的文檔頁面。', - view_or_edit_on_github: '在 GitHub 上查看或編輯此內容', + knowledge_base: '鐭ヨ瓨搴?, + contribute_content: '璨㈢嵒鍏у', + no_docs_available: '鐭ヨ瓨搴毇鐒℃枃妾斻€?, + docs_auto_load_from_github: '鏂囨獢灏囧緸 GitHub 瀛樺劜搴腑鑷嫊鍔犺級銆?, + policy: '鏀跨瓥', + creation_date: '鎴愭枃鏃ユ湡', + publication_date: '鐧间綀鏃ユ湡', + edit_on_github: '鍦?GitHub 绶ㄨ集', + view_original: '鏌ョ湅鍘熸枃', + github_document_description: '閫欐槸涓€鍊嬪熀鏂?GitHub 瀛樺劜搴殑鏂囨獢闋侀潰銆?, + view_or_edit_on_github: '鍦?GitHub 涓婃煡鐪嬫垨绶ㄨ集姝ゅ収瀹?, // Recipe - recipe: '菜譜', - servings: '份數', - preparation_time: '準備時間', + recipe: '鑿滆瓬', + servings: '浠芥暩', + preparation_time: '婧栧倷鏅傞枔', // China Public Interest Map - NGO: '公益', - China_NGO_DB: '中國公益數據庫', - China_NGO_Map: '中國公益地圖', - China_NGO_Landscape: '中國公益生態圖', - Open_Source_NGO_plan: '開源公益計劃', - landscape: '生態圖', + NGO: '鍏泭', + China_NGO_DB: '涓湅鍏泭鏁告摎搴?, + China_NGO_Map: '涓湅鍏泭鍦板湒', + China_NGO_Landscape: '涓湅鍏泭鐢熸厠鍦?, + Open_Source_NGO_plan: '闁嬫簮鍏泭瑷堝妰', + landscape: '鐢熸厠鍦?, // Chart distribution titles - NGO_area_distribution: 'NGO 地區分佈', - NGO_service_distribution: 'NGO 服務分佈', - NGO_type_distribution: 'NGO 類型分佈', - index_category_broad: '寬基', - index_category_sector: '行業', - index_category_theme: '主題', - index_risk_conservative: '保守', - index_risk_balanced: '穩健', - index_risk_aggressive: '進取', - index_sparkline_60d_label: '近 60 日走勢', - data_preparing: '數據準備中', - offline_data: '離線數據', - data_source: '數據源', - index_metric_latest_value: '最新點位', - index_metric_daily_change: '日漲跌', - index_metric_one_year_return: '近 1 年收益', - index_metric_max_drawdown: '最大回撤', - updated_at: '更新於', - view_details: '查看詳情 →', + NGO_area_distribution: 'NGO 鍦板崁鍒嗕綀', + NGO_service_distribution: 'NGO 鏈嶅嫏鍒嗕綀', + NGO_type_distribution: 'NGO 椤炲瀷鍒嗕綀', + index_category_broad: '瀵熀', + index_category_sector: '琛屾キ', + index_category_theme: '涓婚', + index_risk_conservative: '淇濆畧', + index_risk_balanced: '绌╁仴', + index_risk_aggressive: '閫插彇', + index_sparkline_60d_label: '杩?60 鏃ヨ蛋鍕?, + data_preparing: '鏁告摎婧栧倷涓?, + offline_data: '闆㈢窔鏁告摎', + data_source: '鏁告摎婧?, + index_metric_latest_value: '鏈€鏂伴粸浣?, + index_metric_daily_change: '鏃ユ疾璺?, + index_metric_one_year_return: '杩?1 骞存敹鐩?, + index_metric_max_drawdown: '鏈€澶у洖鎾?, + updated_at: '鏇存柊鏂?, + view_details: '鏌ョ湅瑭虫儏 鈫?, beta: 'Beta', - finance_page_title: '指數基金理財精選', - finance_page_description: '面向新手用戶的國內指數基金精選頁面,基於 AKShare 數據即時更新。', - finance_hero_title: '指數基金理財 · 國內優選', + finance_page_title: '鎸囨暩鍩洪噾鐞嗚病绮鹃伕', + finance_page_description: '闈㈠悜鏂版墜鐢ㄦ埗鐨勫湅鍏ф寚鏁稿熀閲戠簿閬搁爜闈紝鍩烘柤 AKShare 鏁告摎鍗虫檪鏇存柊銆?, + finance_hero_title: '鎸囨暩鍩洪噾鐞嗚病 路 鍦嬪収鍎伕', finance_hero_intro: - '基於 AKShare 指數數據構建的國內容指數基金精選,幫助新手用戶快速理解風險、收益與波動,挑選適合自己的定投組合。', - finance_hero_chip_akshare_data: 'AKShare 指數數據', - finance_hero_chip_realtime_backtest: '即時行情 & 歷史回測', - finance_hero_chip_risk_layers: '風險等級分層', - finance_hero_cta_pick: '開始挑選', - finance_hero_cta_guide: '理財新手指南', - finance_hero_stat_coverage_label: '覆蓋指數', - finance_hero_stat_coverage_sub: '寬基 + 行業核心指數', - finance_hero_stat_refresh_label: '數據刷新', + '鍩烘柤 AKShare 鎸囨暩鏁告摎妲嬪缓鐨勫湅鍏у鎸囨暩鍩洪噾绮鹃伕锛屽公鍔╂柊鎵嬬敤鎴跺揩閫熺悊瑙iⅷ闅€佹敹鐩婅垏娉㈠嫊锛屾寫閬搁仼鍚堣嚜宸辩殑瀹氭姇绲勫悎銆?, + finance_hero_chip_akshare_data: 'AKShare 鎸囨暩鏁告摎', + finance_hero_chip_realtime_backtest: '鍗虫檪琛屾儏 & 姝峰彶鍥炴脯', + finance_hero_chip_risk_layers: '棰ㄩ毆绛夌礆鍒嗗堡', + finance_hero_cta_pick: '闁嬪鎸戦伕', + finance_hero_cta_guide: '鐞嗚病鏂版墜鎸囧崡', + finance_hero_stat_coverage_label: '瑕嗚搵鎸囨暩', + finance_hero_stat_coverage_sub: '瀵熀 + 琛屾キ鏍稿績鎸囨暩', + finance_hero_stat_refresh_label: '鏁告摎鍒锋柊', finance_hero_stat_refresh_value: '60s', - finance_hero_stat_refresh_sub: '即時行情自動更新', - finance_hero_stat_risk_label: '風險提示', + finance_hero_stat_refresh_sub: '鍗虫檪琛屾儏鑷嫊鏇存柊', + finance_hero_stat_risk_label: '棰ㄩ毆鎻愮ず', finance_hero_stat_risk_value: '3', - finance_hero_stat_risk_sub: '保守 · 穩健 · 進取', - finance_filter_title: '快速篩選', - finance_filter_summary_prefix: '根據風險與類別篩選合適的指數基金,目前條件:', - finance_filter_reset: '清空條件', - finance_filter_category_label: '指數類別', - finance_filter_risk_label: '風險等級', - finance_filter_category_suffix: '指數', - finance_filter_risk_suffix: '風險', - finance_filter_category_all: '全部類別', - finance_filter_risk_all: '全部風險', - finance_all: '全部', - finance_filter_risk_all_desc: '不限風險偏好', - finance_filter_risk_conservative_desc: '波動小於 12%', - finance_filter_risk_balanced_desc: '波動 12%-20%', - finance_filter_risk_aggressive_desc: '波動大於 20%', - finance_list_title: '指數基金精選', - finance_list_subtitle_prefix: '展示指數:', - finance_list_subtitle_suffix: ',數據源 AkShare', - finance_list_export_soon: '數據導出(即將上線)', - finance_list_strategy_suggestion: '策略組合建議', - finance_empty_title: '暫無符合條件的指數', - finance_empty_subtitle: '嘗試放寬篩選條件,或稍後再試。', - finance_empty_reset_button: '重置篩選', - finance_edu_title: '指數基金三句話', - finance_edu_point_1: '跟蹤一籃子股票,成本低、透明度高。', - finance_edu_point_2: '長期定投平滑風險,優先關注寬基指數。', - finance_edu_point_3: '用數據衡量風險:波動、回撤、估值百分位。', - finance_edu_next_steps: '下一步', - finance_edu_next_1: '挑選 2-3 支指數,加入收藏/關注列表。', - finance_edu_next_2: '了解對應的 ETF 或聯接基金,關注費率與規模。', - finance_edu_next_3: '設定定投計畫並持續跟蹤估值、回撤。', + finance_hero_stat_risk_sub: '淇濆畧 路 绌╁仴 路 閫插彇', + finance_filter_title: '蹇€熺閬?, + finance_filter_summary_prefix: '鏍规摎棰ㄩ毆鑸囬鍒ョ閬稿悎閬╃殑鎸囨暩鍩洪噾锛岀洰鍓嶆浠讹細', + finance_filter_reset: '娓呯┖姊濅欢', + finance_filter_category_label: '鎸囨暩椤炲垾', + finance_filter_risk_label: '棰ㄩ毆绛夌礆', + finance_filter_category_suffix: '鎸囨暩', + finance_filter_risk_suffix: '棰ㄩ毆', + finance_filter_category_all: '鍏ㄩ儴椤炲垾', + finance_filter_risk_all: '鍏ㄩ儴棰ㄩ毆', + finance_all: '鍏ㄩ儴', + finance_filter_risk_all_desc: '涓嶉檺棰ㄩ毆鍋忓ソ', + finance_filter_risk_conservative_desc: '娉㈠嫊灏忔柤 12%', + finance_filter_risk_balanced_desc: '娉㈠嫊 12%-20%', + finance_filter_risk_aggressive_desc: '娉㈠嫊澶ф柤 20%', + finance_list_title: '鎸囨暩鍩洪噾绮鹃伕', + finance_list_subtitle_prefix: '灞曠ず鎸囨暩锛?, + finance_list_subtitle_suffix: '锛屾暩鎿氭簮 AkShare', + finance_list_export_soon: '鏁告摎灏庡嚭锛堝嵆灏囦笂绶氾級', + finance_list_strategy_suggestion: '绛栫暐绲勫悎寤鸿', + finance_empty_title: '鏆劇绗﹀悎姊濅欢鐨勬寚鏁?, + finance_empty_subtitle: '鍢楄│鏀惧绡╅伕姊濅欢锛屾垨绋嶅緦鍐嶈│銆?, + finance_empty_reset_button: '閲嶇疆绡╅伕', + finance_edu_title: '鎸囨暩鍩洪噾涓夊彞瑭?, + finance_edu_point_1: '璺熻工涓€绫冨瓙鑲$エ锛屾垚鏈綆銆侀€忔槑搴﹂珮銆?, + finance_edu_point_2: '闀锋湡瀹氭姇骞虫粦棰ㄩ毆锛屽劒鍏堥棞娉ㄥ鍩烘寚鏁搞€?, + finance_edu_point_3: '鐢ㄦ暩鎿氳 閲忛ⅷ闅細娉㈠嫊銆佸洖鎾ゃ€佷及鍊肩櫨鍒嗕綅銆?, + finance_edu_next_steps: '涓嬩竴姝?, + finance_edu_next_1: '鎸戦伕 2-3 鏀寚鏁革紝鍔犲叆鏀惰棌锛忛棞娉ㄥ垪琛ㄣ€?, + finance_edu_next_2: '浜嗚В灏嶆噳鐨?ETF 鎴栬伅鎺ュ熀閲戯紝闂滄敞璨荤巼鑸囪妯°€?, + finance_edu_next_3: '瑷畾瀹氭姇瑷堢暙涓︽寔绾岃窡韫や及鍊笺€佸洖鎾ゃ€?, // Hackathon - hackathon_detail: '黑客松詳情', - hackathon_highlights: '賽道方向', + hackathon_detail: '榛戝鏉捐┏鎯?, + hackathon_highlights: '璩介亾鏂瑰悜', hackathon_highlights_subtitle: 'Theme & Tracks', - event_description: '活動描述', - event_location: '活動地點', - event_duration: '活動時間', - main_visual: '主視覺', - countdown_days: '天', - countdown_hours: '時', - countdown_minutes: '分', - countdown_seconds: '秒', - product_submission: '產品提交', - agenda: '日程安排', - hackathon_participant_registration: '參與者登記', + event_description: '娲诲嫊鎻忚堪', + event_location: '娲诲嫊鍦伴粸', + event_duration: '娲诲嫊鏅傞枔', + main_visual: '涓昏瑕?, + countdown_days: '澶?, + countdown_hours: '鏅?, + countdown_minutes: '鍒?, + countdown_seconds: '绉?, + product_submission: '鐢㈠搧鎻愪氦', + agenda: '鏃ョ▼瀹夋帓', + hackathon_participant_registration: '鍙冭垏鑰呯櫥瑷?, hackathon_participant_registration_description: - '收集報名成員、建立參賽者池,並為後續組隊和通知打底。', - hackathon_team_lead: '隊長', - hackathon_project_registration: '項目註冊', + '鏀堕泦鍫卞悕鎴愬摗銆佸缓绔嬪弮璩借€呮睜锛屼甫鐐哄緦绾岀祫闅婂拰閫氱煡鎵撳簳銆?, + hackathon_team_lead: '闅婇暦', + hackathon_project_registration: '闋呯洰瑷诲唺', hackathon_project_registration_description: - '登記項目名稱、成員、賽道和一句話介紹,完成隊伍鎖定。', - hackathon_submission: '提交', - hackathon_product_submission_description: '比賽截止前統一提交最終作品、演示連結和補充說明。', - hackathon_review: '評審', - hackathon_evaluation_entry: '評審入口', - hackathon_evaluation_entry_description: '評委或導師在評審階段使用,用於評分、複核與結果整理。', + '鐧昏闋呯洰鍚嶇ū銆佹垚鍝°€佽辰閬撳拰涓€鍙ヨ┍浠嬬垂锛屽畬鎴愰殜浼嶉帠瀹氥€?, + hackathon_submission: '鎻愪氦', + hackathon_product_submission_description: '姣旇辰鎴鍓嶇当涓€鎻愪氦鏈€绲備綔鍝併€佹紨绀洪€g祼鍜岃鍏呰鏄庛€?, + hackathon_review: '瑭曞', + hackathon_evaluation_entry: '瑭曞鍏ュ彛', + hackathon_evaluation_entry_description: '瑭曞鎴栧皫甯湪瑭曞闅庢浣跨敤锛岀敤鏂艰鍒嗐€佽鏍歌垏绲愭灉鏁寸悊銆?, hackathon_event_schedule: 'EVENT SCHEDULE', - common_questions: '常見問題', + common_questions: '甯歌鍟忛', hackathon_faq_subtitle: 'FAQ', - hackathon_faq_registration_question: '應該從哪個入口開始?', - hackathon_faq_registration_answer_prefix: '優先使用當前開放的入口:', - hackathon_faq_schedule_question: '活動節奏怎麼安排?', - hackathon_faq_location_question: '活動在哪裡進行?', - hackathon_faq_resources_question: '現場能提供哪些資源?', - hackathon_faq_submission_question: '提交或後續流程從哪裡進入?', - hackathon_faq_submission_answer_prefix: '後續階段可繼續使用:', - hackathon_people_showcase: '參與者社群', + hackathon_faq_registration_question: '鎳夎┎寰炲摢鍊嬪叆鍙i枊濮嬶紵', + hackathon_faq_registration_answer_prefix: '鍎厛浣跨敤鐣跺墠闁嬫斁鐨勫叆鍙o細', + hackathon_faq_schedule_question: '娲诲嫊绡€濂忔€庨杭瀹夋帓锛?, + hackathon_faq_location_question: '娲诲嫊鍦ㄥ摢瑁¢€茶锛?, + hackathon_faq_resources_question: '鐝惧牬鑳芥彁渚涘摢浜涜硣婧愶紵', + hackathon_faq_submission_question: '鎻愪氦鎴栧緦绾屾祦绋嬪緸鍝!閫插叆锛?, + hackathon_faq_submission_answer_prefix: '寰岀簩闅庢鍙辜绾屼娇鐢細', + hackathon_people_showcase: '鍙冭垏鑰呯ぞ缇?, hackathon_people_showcase_subtitle: 'Contributors & GitHub Profiles', - hackathon_resource_zone: '資源與項目', + hackathon_resource_zone: '璩囨簮鑸囬爡鐩?, hackathon_resource_zone_subtitle: 'Templates, repositories and submitted work', - hackathon_show_more: '展開更多', - hackathon_show_less: '收起內容', - hackathon_register_now: '立即報名', - hackathon_judging_title: '評審標準 · Judging Criteria', - hackathon_support_action: '通過主辦方聯繫', - hackathon_criteria_innovation_title: '創新性 Innovation', - hackathon_criteria_innovation_desc: '想法有新意,能針對真實問題提出清晰方案。', - hackathon_criteria_technical_title: '技術深度 Technical Depth', - hackathon_criteria_technical_desc: 'AI 能力是否被有效運用,並形成技術價值。', - hackathon_criteria_completion_title: '完成度 Completion', - hackathon_criteria_completion_desc: '作品是否可運行、可演示,主路徑是否完整。', - hackathon_criteria_presentation_title: '表達與設計 Presentation', - hackathon_criteria_presentation_desc: '敘事清晰,互動流暢,整體體驗具有說服力。', - hackathon_action_hub: '入口中心 · 表單', - hackathon_entry_flow: '報名與提交流程', + hackathon_show_more: '灞曢枊鏇村', + hackathon_show_less: '鏀惰捣鍏у', + hackathon_register_now: '绔嬪嵆鍫卞悕', + hackathon_judging_title: '瑭曞妯欐簴 路 Judging Criteria', + hackathon_support_action: '閫氶亷涓昏睛鏂硅伅绻?, + hackathon_criteria_innovation_title: '鍓垫柊鎬?Innovation', + hackathon_criteria_innovation_desc: '鎯虫硶鏈夋柊鎰忥紝鑳介嚌灏嶇湡瀵﹀晱椤屾彁鍑烘竻鏅版柟妗堛€?, + hackathon_criteria_technical_title: '鎶€琛撴繁搴?Technical Depth', + hackathon_criteria_technical_desc: 'AI 鑳藉姏鏄惁琚湁鏁堥亱鐢紝涓﹀舰鎴愭妧琛撳児鍊笺€?, + hackathon_criteria_completion_title: '瀹屾垚搴?Completion', + hackathon_criteria_completion_desc: '浣滃搧鏄惁鍙亱琛屻€佸彲婕旂ず锛屼富璺緫鏄惁瀹屾暣銆?, + hackathon_criteria_presentation_title: '琛ㄩ仈鑸囪ō瑷?Presentation', + hackathon_criteria_presentation_desc: '鏁樹簨娓呮櫚锛屼簰鍕曟祦鏆紝鏁撮珨楂旈鍏锋湁瑾湇鍔涖€?, + hackathon_action_hub: '鍏ュ彛涓績 路 琛ㄥ柈', + hackathon_entry_flow: '鍫卞悕鑸囨彁浜ゆ祦绋?, hackathon_entry_flow_description: - '入口會根據活動當前配置自動生成。不同活動可以共用同一套頁面結構,而不是為每次活動單開專頁。', - hackathon_phase: '階段', - hackathon_schedule_window_label: '窗口', - hackathon_schedule_reason_label: '原因', - hackathon_schedule_focus_label: '重點', - hackathon_schedule_goal_label: '階段目標', - hackathon_schedule_reason_meta: '節奏設計', - hackathon_schedule_focus_meta: '執行重點', - hackathon_schedule_reason_enrollment: '提前預熱並集中拉新,確保組隊前有足夠候選參賽者。', - hackathon_schedule_reason_formation: '壓縮組隊窗口,促進快速決策,避免長期搖擺。', - hackathon_schedule_reason_competition: '限定衝刺周期,聚焦可演示成果而非無限擴展。', - hackathon_schedule_reason_evaluation: '保留獨立評審時間,保障打分與複核品質。', - hackathon_schedule_reason_default: '根據當前活動階段安排關鍵動作,確保節奏可執行。', - hackathon_schedule_focus_enrollment: '完成隊員登記並進入社群,盡快匹配潛在隊友。', - hackathon_schedule_focus_formation: '明確題目、鎖定成員與分工,快速形成穩定隊伍。', - hackathon_schedule_focus_competition: '提交可運行 Demo、代碼庫與核心說明,保證主路徑完整。', - hackathon_schedule_focus_evaluation: '圍繞評審標準完成評分、複核並準備展示名單。', - hackathon_schedule_focus_default: '圍繞階段核心任務推進,優先完成關鍵交付。', - hackathon_schedule_goal_enrollment: '建立參賽者池,為後續組隊與比賽提供品質基礎。', - hackathon_schedule_goal_formation: '在短周期內完成組隊閉環,讓隊伍進入可執行狀態。', - hackathon_schedule_goal_competition: '產出可演示、可復現的作品並按時提交。', - hackathon_schedule_goal_evaluation: '形成穩定評審結果並完成 Demo Day 前置準備。', - hackathon_schedule_goal_default: '確保當前階段目標清晰、動作閉環且可按時交付。', - participants: '參與者', - organizations: '組織方', - prizes: '獎項', - hackathon_prizes: '黑客松獎項', - templates: '項目模板', - projects: '參賽項目', - workshop: '工作坊', - enrollment: '報名中', - formation: '組隊', - competition: '比賽', - evaluation: '評審', - presentation: '展示', - coding: '編程', - break: '休息', - ceremony: '儀式', - members: '成員', - sponsor: '贊助商', - price: '獎金', - amount: '數量', - source_code: '源代碼', - preview: '預覽', - created_by: '創建者', - products: '產品', - score: '評分', + '鍏ュ彛鏈冩牴鎿氭椿鍕曠暥鍓嶉厤缃嚜鍕曠敓鎴愩€備笉鍚屾椿鍕曞彲浠ュ叡鐢ㄥ悓涓€濂楅爜闈㈢祼妲嬶紝鑰屼笉鏄偤姣忔娲诲嫊鍠枊灏堥爜銆?, + hackathon_phase: '闅庢', + hackathon_schedule_window_label: '绐楀彛', + hackathon_schedule_reason_label: '鍘熷洜', + hackathon_schedule_focus_label: '閲嶉粸', + hackathon_schedule_goal_label: '闅庢鐩', + hackathon_schedule_reason_meta: '绡€濂忚ō瑷?, + hackathon_schedule_focus_meta: '鍩疯閲嶉粸', + hackathon_schedule_reason_enrollment: '鎻愬墠闋愮啽涓﹂泦涓媺鏂帮紝纰轰繚绲勯殜鍓嶆湁瓒冲鍊欓伕鍙冭辰鑰呫€?, + hackathon_schedule_reason_formation: '澹撶府绲勯殜绐楀彛锛屼績閫插揩閫熸焙绛栵紝閬垮厤闀锋湡鎼栨摵銆?, + hackathon_schedule_reason_competition: '闄愬畾琛濆埡鍛ㄦ湡锛岃仛鐒﹀彲婕旂ず鎴愭灉鑰岄潪鐒¢檺鎿村睍銆?, + hackathon_schedule_reason_evaluation: '淇濈暀鐛ㄧ珛瑭曞鏅傞枔锛屼繚闅滄墦鍒嗚垏瑜囨牳鍝佽唱銆?, + hackathon_schedule_reason_default: '鏍规摎鐣跺墠娲诲嫊闅庢瀹夋帓闂滈嵉鍕曚綔锛岀⒑淇濈瘈濂忓彲鍩疯銆?, + hackathon_schedule_focus_enrollment: '瀹屾垚闅婂摗鐧昏涓﹂€插叆绀剧兢锛岀洝蹇尮閰嶆經鍦ㄩ殜鍙嬨€?, + hackathon_schedule_focus_formation: '鏄庣⒑椤岀洰銆侀帠瀹氭垚鍝¤垏鍒嗗伐锛屽揩閫熷舰鎴愮┅瀹氶殜浼嶃€?, + hackathon_schedule_focus_competition: '鎻愪氦鍙亱琛?Demo銆佷唬纰煎韩鑸囨牳蹇冭鏄庯紝淇濊瓑涓昏矾寰戝畬鏁淬€?, + hackathon_schedule_focus_evaluation: '鍦嶇篂瑭曞妯欐簴瀹屾垚瑭曞垎銆佽鏍镐甫婧栧倷灞曠ず鍚嶅柈銆?, + hackathon_schedule_focus_default: '鍦嶇篂闅庢鏍稿績浠诲嫏鎺ㄩ€诧紝鍎厛瀹屾垚闂滈嵉浜や粯銆?, + hackathon_schedule_goal_enrollment: '寤虹珛鍙冭辰鑰呮睜锛岀偤寰岀簩绲勯殜鑸囨瘮璩芥彁渚涘搧璩熀绀庛€?, + hackathon_schedule_goal_formation: '鍦ㄧ煭鍛ㄦ湡鍏у畬鎴愮祫闅婇枆鐠帮紝璁撻殜浼嶉€插叆鍙煼琛岀媭鎱嬨€?, + hackathon_schedule_goal_competition: '鐢㈠嚭鍙紨绀恒€佸彲寰╃従鐨勪綔鍝佷甫鎸夋檪鎻愪氦銆?, + hackathon_schedule_goal_evaluation: '褰㈡垚绌╁畾瑭曞绲愭灉涓﹀畬鎴?Demo Day 鍓嶇疆婧栧倷銆?, + hackathon_schedule_goal_default: '纰轰繚鐣跺墠闅庢鐩娓呮櫚銆佸嫊浣滈枆鐠颁笖鍙寜鏅備氦浠樸€?, + participants: '鍙冭垏鑰?, + organizations: '绲勭箶鏂?, + prizes: '鐛庨爡', + hackathon_prizes: '榛戝鏉剧崕闋?, + templates: '闋呯洰妯℃澘', + projects: '鍙冭辰闋呯洰', + workshop: '宸ヤ綔鍧?, + enrollment: '鍫卞悕涓?, + formation: '绲勯殜', + competition: '姣旇辰', + evaluation: '瑭曞', + presentation: '灞曠ず', + coding: '绶ㄧ▼', + break: '浼戞伅', + ceremony: '鍎€寮?, + members: '鎴愬摗', + sponsor: '璐婂姪鍟?, + price: '鐛庨噾', + amount: '鏁搁噺', + source_code: '婧愪唬纰?, + preview: '闋愯', + created_by: '鍓靛缓鑰?, + products: '鐢㈠搧', + score: '瑭曞垎', // Team detail page - hackathon_team_showcase: '團隊展示', - team_members: '團隊成員', - team_works: '團隊作品', - no_news_yet: '暫無動態', + hackathon_team_showcase: '鍦橀殜灞曠ず', + team_members: '鍦橀殜鎴愬摗', + team_works: '鍦橀殜浣滃搧', + no_news_yet: '鏆劇鍕曟厠', + // Open Library + open_library: '開源圖書館', + open_library_description: '瀏覽開源與技術類圖書,支持借閱與共享', + book_catalog: '圖書目錄', + search_books_placeholder: '搜尋書名、作者或標籤…', + library_category_all: '全部分類', + library_category_open_source: '開源', + library_category_programming: '程式設計', + library_category_community: '社群', + library_category_design: '設計', + library_category_business: '商業', + library_status_all: '全部狀態', + library_status_available: '可借', + library_status_borrowed: '已借出', + view_details: '檢視詳情', + back_to_library: '返回圖書館', + no_books_found: '未找到匹配的圖書', + book_details: '圖書資訊', + publisher: '出版社', + year: '年份', + pages: '頁數', + language: '語言', + category: '分類', + borrowing_info: '借閱資訊', + borrower: '借閱人', + borrow_date: '借閱日期', + expected_return_date: '預計歸還日期', + borrowing_guide: '借閱指南', + borrowing_guide_step1: '在圖書目錄中選擇您感興趣的圖書', + borrowing_guide_step2: '檢視圖書詳情,確認可借狀態', + borrowing_guide_step3: '聯絡開源市集管理員提交借閱申請', + borrowing_guide_step4: '管理員確認後,到指定地點領取圖書', + borrowing_guide_step5: '請在約定時間內歸還,方便他人借閱', }; diff --git a/types/library.ts b/types/library.ts new file mode 100644 index 0000000..37482ee --- /dev/null +++ b/types/library.ts @@ -0,0 +1,22 @@ +export interface Book { + id: string; + title: string; + author: string; + cover: string; + description: string; + category: BookCategory; + status: BookStatus; + borrower?: string; + borrowDate?: string; + returnDate?: string; + publisher?: string; + year?: number; + isbn?: string; + pages?: number; + language?: string; + tags?: string[]; +} + +export type BookCategory = 'open-source' | 'programming' | 'community' | 'design' | 'business'; + +export type BookStatus = 'available' | 'borrowed';
{book.author}
{book.description}
{t('open_library_description')}