Skip to content

feat: restructure site — i18n (5 languages), Quick Start, project status, accessibility#1

Open
iasds wants to merge 17 commits into
go-i2p:mainfrom
iasds:feat/i18n-support
Open

feat: restructure site — i18n (5 languages), Quick Start, project status, accessibility#1
iasds wants to merge 17 commits into
go-i2p:mainfrom
iasds:feat/i18n-support

Conversation

@iasds

@iasds iasds commented May 29, 2026

Copy link
Copy Markdown

Summary

Site restructure: i18n (5 languages), Quick Start, project status, accessibility, bug fixes.

Languages

Language Code Status
English en default
中文 zh verified by @iasds
Русский ru needs review
Español es needs review
Türkçe tr needs review

More languages can be added later — each is just one JSON file.

Changes

Content: Quick Start (Go code example), Project Status (3 cards with honest assessments), interface explanation, maturity tooltips on badges.

Bug fixes: 8 unclosed HTML tags, duplicate lang entry, RTL support, innerHTML replacement, en.json fallback, YAML syntax fix.

SEO: Open Graph/Twitter Card, sitemap.xml, robots.txt, new favicon.

Accessibility: ARIA attributes, keyboard navigation, improved noscript for Tor.

Maintenance: sync-keys.py, validate-translations CI, removed conflicting page.yml workflow, dynamic footer date.

Preview

https://iasds.github.io/go-i2p.github.io/

iasds added 7 commits May 29, 2026 08:41
- Add i18n.js module with language detection, selector dropdown, and DOM translation
- Add 103 language JSON files (en + 102 translations)
- Major languages (zh/ja/ko/vi/th/hi/ar/es/fr/de/pt/ru/it/pl/nl/uk etc.) have full 84-key translations
- Smaller/regional languages have UI element translations with English fallback for technical content
- Default language: English, browser auto-detection supported
- Measure actual rendered badge text width after translation
- Inject CSS custom grid-template-columns via JS
- Clamp between 44px-100px, responsive breakpoints included
- CSS fallback values kept for no-JS scenarios
@iasds iasds changed the title feat: add i18n support with 102 languages feat: full restructure — i18n (102 languages), dynamic layout, Tor accessibility May 29, 2026
iasds added 2 commits May 29, 2026 20:50
The zh.json file was previously just a copy of en.json with only 2 keys
translated. Now all user-facing strings are in natural Chinese, with
technical terms (GitHub, go-i2p, net.Conn, SAMv3.3 etc.) kept in English.
- Stats bar: repos, router, categories, licensed
- Category headings: all 8 categories now have data-i18n
- Library descriptions: all 44 desc.xxx keys now mapped
- Callout: callout.libs separated for translation
- Footer: last updated text translatable

Total data-i18n attributes: 61 → 109
@eyedeekay

Copy link
Copy Markdown
Contributor

Wow. This is absolutely an incredible contribution, and I am extremely thankful for it. It's absolutely a huge improvement over the very basic site I had created just to get things off the ground. Upon review(which may take a week or two, I will have to ask for help), it will absolutely be accepted.

I am somewhat curious about the methodology used for the translations, I am not generally opposed to LLM use for this purpose but I do prefer that it be disclosed because it will affect the review process. It's not realistic for me to put a human in the loop for 102 new translated languages, which is what I would prefer to do, so I'll have to get humans involved for the languages I can(I may be able to find volunteer reviewers for Chinese, Russian, Spanish, and Turkish).

Thank you very much for your contribution and your interest. I'll start pinging my bilingual colleagues to review a sample of the translated text so we can move forward and get this merged.

@iasds

iasds commented Jun 2, 2026

Copy link
Copy Markdown
Author

Hi eyedeekay,

感谢夸奖和花时间审查。

坦白说:翻译确实用了LLM辅助。102种语言,人工翻译不太现实。我知道不少开发者对LLM辅助持保留态度,但在翻译这个领域,LLM的表现已经相当可靠——尤其是相比传统的机器翻译,质量提升明显。对于这种短文本的展示页面,LLM翻译完全够用。

值得一提的是:这只是项目的展示网站——没有程序逻辑、没有UI字符串、不涉及实际软件。go-i2p的代码本身还是英文的,所以翻译质量不会影响代码完整性或功能。

从项目资源的角度来看,go-i2p目前的人手和可用资源有限,应该把精力集中在代码本身。在这种情况下,用LLM辅助搭建展示网站是最高效、最低成本的方式。

如果你担心翻译质量,完全可以用LLM再扫一遍现有翻译内容做交叉验证——这比人工逐条审查102种语言要高效得多。

另外,我在I2P生态有过翻译贡献的经验——我之前为 PurpleI2P/i2pd_docs_zh 贡献了主要的中文翻译内容(https://github.com/PurpleI2P/i2pd_docs_zh)。对于I2P项目的术语和表达方式有一定了解。

建议审查轻量化,把精力集中在代码本身——那才是真正重要的部分。如果审阅者发现翻译问题,我很乐意配合修改。

Best

iasds added 8 commits June 2, 2026 12:11
…llback

Bug fixes:
- Close 8 unclosed <span class='cat-note'> tags in index.html
- Remove duplicate 'so' (Soomaali) from langs array
- Add RTL support (dir=rtl) for ar/he/fa/ur/ps/ku/dv/yi
- Replace innerHTML with DOM API for lang selector arrow
- Add en.json fallback for missing/empty translation keys

Content restoration (from original README):
- Add net.Conn/net.PacketConn interface explanation paragraph
- Add maturity descriptions for 8 projects (not just STABLE/WIP)
- Dynamic build date in footer (JS-generated, not hardcoded)

Maintenance:
- Add sync-keys.py for batch key synchronization across 103 lang files
- Expand en.json from 85 to 94 keys (8 maturity + 1 interface_note)
- Sync all 102 translation files with new keys
Content:
- Add Quick Start section with Go code example
- Add Project Status section (production-ready / in-dev / developer advice)
- Replace I2P favicon with go-i2p SVG favicon

SEO:
- Add Open Graph meta tags for social sharing
- Add Twitter Card meta tags
- Improve meta description with specific project info
- Add sitemap.xml and robots.txt

Accessibility:
- Add ARIA attributes to language selector (role, aria-haspopup, aria-expanded)
- Add keyboard navigation (ArrowUp/Down/Enter/Escape) for language dropdown
- Improve noscript message for Tor Browser users

Design:
- Improve maturity description styling (gold badge instead of gray italic)
- Add CSS for Quick Start code block and Project Status cards

Maintenance:
- Add validate-translations.yml CI workflow (JSON syntax + key sync + HTML coverage)
- Sync all 103 language files with new keys (now 103 keys each)
Remove 98 language files. Keep English (default), Chinese, Russian,
Spanish, Turkish — the languages eyedeekay can get human reviewers for.
Other languages can be added back after initial merge.
@iasds iasds changed the title feat: full restructure — i18n (102 languages), dynamic layout, Tor accessibility feat: restructure site — i18n (5 languages), Quick Start, project status, accessibility Jun 3, 2026
@iasds

iasds commented Jun 3, 2026

Copy link
Copy Markdown
Author

Hi eyedeekay,

Update: I've reduced the language scope from 102 to 5 for easier review:

  • English (default)
  • 中文 (Chinese) — I can verify this
  • Русский (Russian)
  • Español (Spanish)
  • Türkçe (Turkish)

These are the 4 languages you mentioned having reviewers for, plus English as default. The i18n framework is intact — adding more languages later is just dropping in a JSON file.

I also fixed several bugs (unclosed HTML tags, duplicate lang entry, missing RTL support), added a Quick Start section with code example, project status cards, and cleaned up the workflows.

Preview: https://iasds.github.io/go-i2p.github.io/

@eyedeekay

Copy link
Copy Markdown
Contributor

Awesome, that's much easier for me to take as a first contribution for the website, thank you very much for reducing the scope temporarily, we'll re-expand once we have these first few languages in place. I'm traveling this week and working from the road so my schedule is a little irregular, I'll be back tomorrow with the rest of my review and we'll get ready to move forward.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants