mirror of
https://github.com/reonokiy/blog.nokiy.net.git
synced 2025-06-15 19:22:52 +02:00
feat: add support for more languages
This commit is contained in:
parent
9894c4eccb
commit
48464370a4
10 changed files with 123 additions and 60 deletions
|
@ -50,10 +50,10 @@ export const themeConfig: ThemeConfig = {
|
|||
// GLOBAL SETTINGS >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> START
|
||||
global: {
|
||||
// default language
|
||||
locale: 'zh', // zh, zh-tw, ja, en, es, ru, pt
|
||||
locale: 'zh', // de, en, es, fr, ja, ko, pl, pt, ru, zh, zh-tw
|
||||
// more languages
|
||||
// not fill in the locale code above again, can be an empty array []
|
||||
moreLocales: ['zh-tw', 'ja', 'en', 'es', 'ru'], // ['zh', 'zh-tw', 'ja', 'en', 'es', 'ru', 'pt']
|
||||
moreLocales: ['en', 'es', 'ja', 'ru', 'zh-tw'], // ['de', 'en', 'es', 'fr', 'ja', 'ko', 'pl', 'pt', 'ru', 'zh', 'zh-tw']
|
||||
// font styles for post text
|
||||
fontStyle: 'sans', // sans, serif
|
||||
// date format for posts
|
||||
|
|
|
@ -14,16 +14,35 @@ published: 2025-03-24
|
|||
---
|
||||
```
|
||||
|
||||
<!-- German (de) -->
|
||||
Dies ist ein universeller mehrsprachiger Artikel ohne spezifizierte 'lang'-Angabe, der standardmäßig in allen sprachspezifischen Pfaden angezeigt wird.
|
||||
|
||||
<!-- English (en) -->
|
||||
This is a universal multilingual article with unspecified 'lang', displayed by default across all language-specific paths.
|
||||
|
||||
<!-- Spanish (es) -->
|
||||
Este es un artículo universal multilingüe sin definir 'lang', visible por defecto en todas las rutas de idiomas.
|
||||
|
||||
Это универсальная многоязычная статья без указания 'lang', отображаемая по умолчанию во всех языковых разделах.
|
||||
<!-- French (fr) -->
|
||||
Ceci est un article universel multilingue sans spécification de 'lang', affiché par défaut dans tous les chemins spécifiques aux langues.
|
||||
|
||||
<!-- Japanese (ja) -->
|
||||
これは言語パラメータ(lang)未指定の汎用マルチリンガル記事です。全言語パスでデフォルト表示されます。
|
||||
|
||||
<!-- Korean (ko) -->
|
||||
이것은 'lang'을 지정하지 않은 다국어 범용 기사로, 기본적으로 모든 언어별 경로에 표시됩니다.
|
||||
|
||||
<!-- Polish (pl) -->
|
||||
To jest uniwersalny wielojęzyczny artykuł bez określonego parametru 'lang', wyświetlany domyślnie we wszystkich ścieżkach specyficznych dla języka.
|
||||
|
||||
<!-- Portuguese (pt) -->
|
||||
Este é um artigo universal multilínguas sem definir 'lang', visível por padrão através de todas as rotas de linguagem.
|
||||
|
||||
<!-- Russian (ru) -->
|
||||
Это универсальная многоязычная статья без указания 'lang', отображаемая по умолчанию во всех языковых разделах.
|
||||
|
||||
<!-- Chinese Simplified (zh) -->
|
||||
这是一篇未指定 lang 的多语言通用文章,默认显示在所有语言路径下。
|
||||
|
||||
<!-- Chinese Traditional (zh-tw) -->
|
||||
這是一篇未指定 lang 的多語言通用文章,預設顯示於所有語言路徑下。
|
||||
|
||||
これは言語パラメータ(lang)未指定の汎用マルチリンガル記事です。全言語パスでデフォルト表示されます。
|
||||
|
|
|
@ -73,11 +73,11 @@ color: {
|
|||
global: {
|
||||
// default language
|
||||
// language of the site root path '/'
|
||||
locale: 'zh' // zh, zh-tw, ja, en, es, ru, pt
|
||||
locale: 'zh' // de, en, es, fr, ja, ko, pl, pt, ru, zh, zh-tw
|
||||
// more languages
|
||||
// generate multi-language paths such as '/es/' '/ru/'
|
||||
// not fill in the locale code above again, can be an empty array []
|
||||
moreLocales: ['zh-tw', 'ja', 'en', 'es', 'ru'] // ['zh', 'zh-tw', 'ja', 'en', 'es', 'ru', 'pt']
|
||||
moreLocales: ['en', 'es', 'ja', 'ru', 'zh-tw'] // ['de', 'en', 'es', 'fr', 'ja', 'ko', 'pl', 'pt', 'ru', 'zh', 'zh-tw']
|
||||
// font style
|
||||
fontStyle: 'sans' // sans, serif
|
||||
// date format for posts
|
||||
|
|
|
@ -73,11 +73,11 @@ color: {
|
|||
global: {
|
||||
// idioma predeterminado
|
||||
// idioma de la ruta raíz del sitio '/'
|
||||
locale: 'zh' // zh, zh-tw, ja, en, es, ru, pt
|
||||
locale: 'zh' // de, en, es, fr, ja, ko, pl, pt, ru, zh, zh-tw
|
||||
// más idiomas
|
||||
// genera rutas multilingües como '/es/' '/ru/'
|
||||
// no incluir el código de idioma anterior nuevamente, puede ser un array vacío []
|
||||
moreLocales: ['zh-tw', 'ja', 'en', 'es', 'ru'] // ['zh', 'zh-tw', 'ja', 'en', 'es', 'ru', 'pt']
|
||||
moreLocales: ['en', 'es', 'ja', 'ru', 'zh-tw'] // ['de', 'en', 'es', 'fr', 'ja', 'ko', 'pl', 'pt', 'ru', 'zh', 'zh-tw']
|
||||
// estilo de fuente
|
||||
fontStyle: 'sans' // sans, serif
|
||||
// formato de fecha para publicaciones
|
||||
|
|
|
@ -73,11 +73,11 @@ color: {
|
|||
global: {
|
||||
// デフォルト言語
|
||||
// サイトのルートパス '/' の言語
|
||||
locale: 'zh' // zh, zh-tw, ja, en, es, ru, pt
|
||||
locale: 'zh' // de, en, es, fr, ja, ko, pl, pt, ru, zh, zh-tw
|
||||
// その他の言語
|
||||
// '/ja/' '/en/' などの多言語パスを生成
|
||||
// デフォルト言語を重複して入力しないでください、空の配列 [] も可能です
|
||||
moreLocales: ['zh-tw', 'ja', 'en', 'es', 'ru'] // ['zh', 'zh-tw', 'ja', 'en', 'es', 'ru', 'pt']
|
||||
moreLocales: ['en', 'es', 'ja', 'ru', 'zh-tw'] // ['de', 'en', 'es', 'fr', 'ja', 'ko', 'pl', 'pt', 'ru', 'zh', 'zh-tw']
|
||||
// フォントスタイル
|
||||
fontStyle: 'sans' // sans, serif
|
||||
// 記事の日付フォーマット
|
||||
|
|
|
@ -73,11 +73,11 @@ color: {
|
|||
global: {
|
||||
// язык по умолчанию
|
||||
// язык корневого пути сайта '/'
|
||||
locale: 'zh' // zh, zh-tw, ja, en, es, ru, pt
|
||||
locale: 'zh' // de, en, es, fr, ja, ko, pl, pt, ru, zh, zh-tw
|
||||
// дополнительные языки
|
||||
// создает многоязычные пути, такие как '/es/' '/ru/'
|
||||
// не указывайте код языка, указанный выше, можно оставить пустым массивом []
|
||||
moreLocales: ['zh-tw', 'ja', 'en', 'es', 'ru'] // ['zh', 'zh-tw', 'ja', 'en', 'es', 'ru', 'pt']
|
||||
moreLocales: ['en', 'es', 'ja', 'ru', 'zh-tw'] // ['de', 'en', 'es', 'fr', 'ja', 'ko', 'pl', 'pt', 'ru', 'zh', 'zh-tw']
|
||||
// стиль шрифта
|
||||
fontStyle: 'sans' // sans, serif
|
||||
// формат даты для постов
|
||||
|
|
|
@ -73,11 +73,11 @@ color: {
|
|||
global: {
|
||||
// 默認語言
|
||||
// 站點根路徑 '/' 的語言
|
||||
locale: 'zh' // zh, zh-tw, ja, en, es, ru, pt
|
||||
locale: 'zh' // de, en, es, fr, ja, ko, pl, pt, ru, zh, zh-tw
|
||||
// 更多語言
|
||||
// 生成 '/ja/' '/en/' 等多語言路徑
|
||||
// 不要重複填寫默認語言,可以為空 []
|
||||
moreLocales: ['zh-tw', 'ja', 'en', 'es', 'ru'] // ['zh', 'zh-tw', 'ja', 'en', 'es', 'ru', 'pt']
|
||||
moreLocales: ['en', 'es', 'ja', 'ru', 'zh-tw'] // ['de', 'en', 'es', 'fr', 'ja', 'ko', 'pl', 'pt', 'ru', 'zh', 'zh-tw']
|
||||
// 字體樣式
|
||||
fontStyle: 'sans' // sans, serif
|
||||
// 文章日期格式
|
||||
|
|
|
@ -73,11 +73,11 @@ color: {
|
|||
global: {
|
||||
// 默认语言
|
||||
// 站点根路径 '/' 的语言
|
||||
locale: 'zh' // zh, zh-tw, ja, en, es, ru, pt
|
||||
locale: 'zh' // de, en, es, fr, ja, ko, pl, pt, ru, zh, zh-tw
|
||||
// 更多语言
|
||||
// 生成 '/ja/' '/en/' 等多语言路径
|
||||
// 不要重复填写默认语言,可以为空 []
|
||||
moreLocales: ['zh-tw', 'ja', 'en', 'es', 'ru'] // ['zh', 'zh-tw', 'ja', 'en', 'es', 'ru', 'pt']
|
||||
moreLocales: ['en', 'es', 'ja', 'ru', 'zh-tw'] // ['de', 'en', 'es', 'fr', 'ja', 'ko', 'pl', 'pt', 'ru', 'zh', 'zh-tw']
|
||||
// 字体样式
|
||||
fontStyle: 'sans' // sans, serif
|
||||
// 文章日期格式
|
||||
|
|
|
@ -1,24 +1,32 @@
|
|||
// Global Language Map
|
||||
export const langMap: Record<string, string[]> = {
|
||||
'zh': ['zh-CN'],
|
||||
'zh-tw': ['zh-TW'],
|
||||
'ja': ['ja-JP'],
|
||||
'de': ['de-DE'],
|
||||
'en': ['en-US'],
|
||||
'es': ['es-ES'],
|
||||
'ru': ['ru-RU'],
|
||||
'fr': ['fr-FR'],
|
||||
'ja': ['ja-JP'],
|
||||
'ko': ['ko-KR'],
|
||||
'pl': ['pl-PL'],
|
||||
'pt': ['pt-BR'],
|
||||
'ru': ['ru-RU'],
|
||||
'zh': ['zh-CN'],
|
||||
'zh-tw': ['zh-TW'],
|
||||
}
|
||||
|
||||
// Waline Language Map
|
||||
// https://waline.js.org/en/guide/features/i18n.html
|
||||
export const walineLocaleMap: Record<string, string> = {
|
||||
'de': 'de',
|
||||
'en': 'en',
|
||||
'es': 'es',
|
||||
'fr': 'fr',
|
||||
'ja': 'jp',
|
||||
'ko': 'en', // Waline does not support Korean, using English as fallback
|
||||
'pl': 'en', // Waline does not support Polish, using English as fallback
|
||||
'pt': 'pt-BR',
|
||||
'ru': 'ru',
|
||||
'zh': 'zh-CN',
|
||||
'zh-tw': 'zh-TW',
|
||||
'ja': 'jp-JP', // Waline uses jp-JP instead of ja-JP
|
||||
'en': 'en-US',
|
||||
'es': 'es-ES',
|
||||
'ru': 'ru-RU',
|
||||
'pt': 'pt-BR',
|
||||
}
|
||||
|
||||
// Supported Languages
|
||||
|
|
104
src/i18n/ui.ts
104
src/i18n/ui.ts
|
@ -1,30 +1,12 @@
|
|||
export const ui = {
|
||||
'zh': {
|
||||
title: '重新编排',
|
||||
subtitle: '再现版式之美',
|
||||
description: 'Retypeset是一款基于Astro框架的静态博客主题,中文名为重新编排。本主题以活版印字为设计灵感,通过建立全新的视觉规范,对所有页面进行重新编排,打造纸质书页般的阅读体验,再现版式之美。所见皆为细节,方寸尽显优雅。',
|
||||
posts: '文章',
|
||||
tags: '标签',
|
||||
about: '关于',
|
||||
toc: '目录',
|
||||
},
|
||||
'zh-tw': {
|
||||
title: '重新編排',
|
||||
subtitle: '再現版式之美',
|
||||
description: 'Retypeset是一款基於Astro框架的靜態部落格主題,中文名為重新編排。本主題以活版印字為設計靈感,通過建立全新的視覺規範,對所有頁面進行重新編排,打造紙質書頁般的閱讀體驗,再現版式之美。所見皆為細節,方寸盡顯優雅。',
|
||||
posts: '文章',
|
||||
tags: '標籤',
|
||||
about: '關於',
|
||||
toc: '目錄',
|
||||
},
|
||||
'ja': {
|
||||
title: '再組版',
|
||||
subtitle: '印刷の美を甦らせる',
|
||||
description: 'Retypesetは、日本語では「再組版」と呼ばれる、Astroフレームワークをベースにした静的ブログテーマです。活版印字からデザインのインスピレーションを得て、新しい視覚的な規範を確立し、すべてのページのレイアウトを再構成することで、紙の書籍のような読書体験を提供し、版面の美しさを蘇らせます。見るものすべてが細部にこだわり、限られたスペースの中に優雅さを表現しています。',
|
||||
posts: '記事',
|
||||
tags: 'タグ',
|
||||
about: '概要',
|
||||
toc: '目次',
|
||||
'de': {
|
||||
title: 'Neusatz',
|
||||
subtitle: 'Die Schönheit der Typografie wiederbeleben',
|
||||
description: 'Retypeset ist ein statisches Blog-Theme basierend auf dem Astro-Framework, auf Deutsch bekannt als "Neusatz". Dieses Theme, inspiriert von traditioneller Typografie, etabliert einen neuen visuellen Standard und gestaltet alle Seiten neu, um ein Leseerlebnis ähnlich dem gedruckter Bücher zu schaffen und die Schönheit des Satzes wiederzubeleben. Jedes Element ist bis ins kleinste Detail durchdacht, Eleganz zeigt sich auch im kleinsten Raum.',
|
||||
posts: 'Beiträge',
|
||||
tags: 'Schlagwörter',
|
||||
about: 'Über',
|
||||
toc: 'Inhaltsverzeichnis',
|
||||
},
|
||||
'en': {
|
||||
title: 'Retypeset',
|
||||
|
@ -44,14 +26,41 @@ export const ui = {
|
|||
about: 'Sobre',
|
||||
toc: 'Índice',
|
||||
},
|
||||
'ru': {
|
||||
title: 'Переверстка',
|
||||
subtitle: 'Возрождая красоту типографики',
|
||||
description: 'Retypeset — это статическая тема блога, основанная на фреймворке Astro. Вдохновленная Typography, Retypeset устанавливает новый визуальный стандарт и переосмысливает компоновку всех страниц, создавая опыт чтения, напоминающий печатные книги, возрождая красоту типографики. Детали в каждом взгляде, элегантность в каждом пространстве.',
|
||||
posts: 'Посты',
|
||||
tags: 'Теги',
|
||||
about: 'О себе',
|
||||
toc: 'Оглавление',
|
||||
'fr': {
|
||||
title: 'Retypographie',
|
||||
subtitle: 'Raviver la beauté de la typographie',
|
||||
description: 'Retypeset est un thème de blog statique basé sur le framework Astro, connu en français sous le nom de "Retypographie". Ce thème, inspiré par la typographie traditionnelle, établit une nouvelle norme visuelle et réorganise toutes les pages pour créer une expérience de lecture semblable à celle des livres imprimés, ravivant ainsi la beauté de la mise en page. Chaque élément est soigné dans les moindres détails, l\'élégance se manifeste dans les plus petits espaces.',
|
||||
posts: 'Articles',
|
||||
tags: 'Étiquettes',
|
||||
about: 'À propos',
|
||||
toc: 'Table des matières',
|
||||
},
|
||||
'ja': {
|
||||
title: '再組版',
|
||||
subtitle: '印刷の美を甦らせる',
|
||||
description: 'Retypesetは、日本語では「再組版」と呼ばれる、Astroフレームワークをベースにした静的ブログテーマです。活版印字からデザインのインスピレーションを得て、新しい視覚的な規範を確立し、すべてのページのレイアウトを再構成することで、紙の書籍のような読書体験を提供し、版面の美しさを蘇らせます。見るものすべてが細部にこだわり、限られたスペースの中に優雅さを表現しています。',
|
||||
posts: '記事',
|
||||
tags: 'タグ',
|
||||
about: '概要',
|
||||
toc: '目次',
|
||||
},
|
||||
'ko': {
|
||||
title: '재조판',
|
||||
subtitle: '판형의 아름다움을 재현하다',
|
||||
description: 'Retypeset은 Astro 프레임워크를 기반으로 한 정적 블로그 테마로, 한국어로는 "재조판"이라고 합니다. 이 테마는 활판 인쇄에서 디자인 영감을 얻어, 새로운 시각적 기준을 확립하고 모든 페이지를 재구성하여 종이책과 같은 독서 경험을 제공하며 판형의 아름다움을 되살립니다. 모든 것이 세부적인 디테일이며, 작은 공간에서도 우아함이 느껴집니다.',
|
||||
posts: '게시물',
|
||||
tags: '태그',
|
||||
about: '소개',
|
||||
toc: '목차',
|
||||
},
|
||||
'pl': {
|
||||
title: 'Przeskład',
|
||||
subtitle: 'Ożywiając piękno typografii',
|
||||
description: 'Retypeset to statyczny motyw bloga oparty na frameworku Astro, w języku polskim znany jako "Przeskład". Ten motyw, inspirowany typografią drukarską, ustanawia nowy standard wizualny i reorganizuje wszystkie strony, tworząc doświadczenie czytelnicze przypominające papierowe książki, przywracając piękno układu tekstu. Każdy element jest dopracowany w szczegółach, elegancja zawarta w najmniejszej przestrzeni.',
|
||||
posts: 'Artykuły',
|
||||
tags: 'Tagi',
|
||||
about: 'O stronie',
|
||||
toc: 'Spis treści',
|
||||
},
|
||||
'pt': {
|
||||
title: 'Retipografia',
|
||||
|
@ -62,4 +71,31 @@ export const ui = {
|
|||
about: 'Sobre',
|
||||
toc: 'Sumário',
|
||||
},
|
||||
'ru': {
|
||||
title: 'Переверстка',
|
||||
subtitle: 'Возрождая красоту типографики',
|
||||
description: 'Retypeset — это статическая тема блога, основанная на фреймворке Astro. Вдохновленная Typography, Retypeset устанавливает новый визуальный стандарт и переосмысливает компоновку всех страниц, создавая опыт чтения, напоминающий печатные книги, возрождая красоту типографики. Детали в каждом взгляде, элегантность в каждом пространстве.',
|
||||
posts: 'Посты',
|
||||
tags: 'Теги',
|
||||
about: 'О себе',
|
||||
toc: 'Оглавление',
|
||||
},
|
||||
'zh': {
|
||||
title: '重新编排',
|
||||
subtitle: '再现版式之美',
|
||||
description: 'Retypeset是一款基于Astro框架的静态博客主题,中文名为重新编排。本主题以活版印字为设计灵感,通过建立全新的视觉规范,对所有页面进行重新编排,打造纸质书页般的阅读体验,再现版式之美。所见皆为细节,方寸尽显优雅。',
|
||||
posts: '文章',
|
||||
tags: '标签',
|
||||
about: '关于',
|
||||
toc: '目录',
|
||||
},
|
||||
'zh-tw': {
|
||||
title: '重新編排',
|
||||
subtitle: '再現版式之美',
|
||||
description: 'Retypeset是一款基於Astro框架的靜態部落格主題,中文名為重新編排。本主題以活版印字為設計靈感,通過建立全新的視覺規範,對所有頁面進行重新編排,打造紙質書頁般的閱讀體驗,再現版式之美。所見皆為細節,方寸盡顯優雅。',
|
||||
posts: '文章',
|
||||
tags: '標籤',
|
||||
about: '關於',
|
||||
toc: '目錄',
|
||||
},
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue