diff --git a/src/renderer/src/lib/format.ts b/src/renderer/src/lib/format.ts index f4b515c..fe3dd2d 100644 --- a/src/renderer/src/lib/format.ts +++ b/src/renderer/src/lib/format.ts @@ -29,6 +29,18 @@ export function prettyTag(tag: string, prefix = ""): string { return label.charAt(0).toUpperCase() + label.slice(1); } +export function tagsWithPrefix(tags: readonly string[], prefix: string): string[] { + return tags.filter((t) => t.startsWith(prefix)); +} + +export function prettyLink(url: string): string { + try { + return new URL(url).hostname.replace(/^www\./, ""); + } catch { + return url; + } +} + export function platformLabel(p: string): string { if (p === "standalonewindows") return "PC (Windows)"; if (p === "android") return "Quest / Android"; diff --git a/src/renderer/src/lib/i18n/locales/en/group.json b/src/renderer/src/lib/i18n/locales/en/group.json new file mode 100644 index 0000000..b0414f1 --- /dev/null +++ b/src/renderer/src/lib/i18n/locales/en/group.json @@ -0,0 +1,20 @@ +{ + "ownedByPrefix": "owned by", + "ownerUnknown": "Unknown owner", + "stats": { + "members": "Members", + "online": "Online", + "languages": "Languages" + }, + "sections": { + "about": "About", + "rules": "Rules", + "details": "Details", + "tags": "Tags" + }, + "facts": { + "joining": "Joining", + "created": "Created", + "groupId": "Group ID" + } +} diff --git a/src/renderer/src/lib/i18n/locales/en/world.json b/src/renderer/src/lib/i18n/locales/en/world.json index d45e3c4..9c3d50d 100644 --- a/src/renderer/src/lib/i18n/locales/en/world.json +++ b/src/renderer/src/lib/i18n/locales/en/world.json @@ -37,6 +37,34 @@ "copy": "Copy", "copied": "Copied" }, + "detail": { + "byPrefix": "by", + "stats": { + "playersNow": "Players now", + "favorites": "Favorites", + "visits": "Visits", + "capacity": "Capacity" + }, + "sections": { + "description": "Description", + "trailer": "Trailer", + "details": "Details", + "tags": "Tags" + }, + "facts": { + "recommended": "Recommended", + "popularity": "Popularity", + "heat": "Heat", + "version": "Version", + "published": "Published", + "communityLabs": "Community Labs", + "created": "Created", + "updated": "Updated", + "worldId": "World ID" + }, + "recommendedValue": "{{count}} players", + "noAuthorTags": "No author tags" + }, "instance": { "title": "Instance", "unavailable": "This instance is no longer available.", diff --git a/src/renderer/src/lib/i18n/locales/ja/group.json b/src/renderer/src/lib/i18n/locales/ja/group.json new file mode 100644 index 0000000..c469151 --- /dev/null +++ b/src/renderer/src/lib/i18n/locales/ja/group.json @@ -0,0 +1,20 @@ +{ + "ownedByPrefix": "オーナー:", + "ownerUnknown": "不明なオーナー", + "stats": { + "members": "メンバー", + "online": "オンライン", + "languages": "言語" + }, + "sections": { + "about": "概要", + "rules": "ルール", + "details": "詳細", + "tags": "タグ" + }, + "facts": { + "joining": "参加方法", + "created": "作成日", + "groupId": "グループID" + } +} diff --git a/src/renderer/src/lib/i18n/locales/ja/world.json b/src/renderer/src/lib/i18n/locales/ja/world.json index 8a74503..62e49a4 100644 --- a/src/renderer/src/lib/i18n/locales/ja/world.json +++ b/src/renderer/src/lib/i18n/locales/ja/world.json @@ -37,6 +37,34 @@ "copy": "コピー", "copied": "コピーしました" }, + "detail": { + "byPrefix": "作者:", + "stats": { + "playersNow": "現在のプレイヤー", + "favorites": "お気に入り", + "visits": "訪問数", + "capacity": "定員" + }, + "sections": { + "description": "説明", + "trailer": "トレーラー", + "details": "詳細", + "tags": "タグ" + }, + "facts": { + "recommended": "推奨人数", + "popularity": "人気度", + "heat": "ヒート", + "version": "バージョン", + "published": "公開日", + "communityLabs": "Community Labs", + "created": "作成日", + "updated": "更新日", + "worldId": "ワールドID" + }, + "recommendedValue": "{{count}} 人", + "noAuthorTags": "作者タグはありません" + }, "instance": { "title": "インスタンス", "unavailable": "このインスタンスはもう利用できません。", diff --git a/src/renderer/src/lib/i18n/locales/th/group.json b/src/renderer/src/lib/i18n/locales/th/group.json new file mode 100644 index 0000000..4cb253a --- /dev/null +++ b/src/renderer/src/lib/i18n/locales/th/group.json @@ -0,0 +1,20 @@ +{ + "ownedByPrefix": "เจ้าของโดย", + "ownerUnknown": "ไม่ทราบเจ้าของ", + "stats": { + "members": "สมาชิก", + "online": "ออนไลน์", + "languages": "ภาษา" + }, + "sections": { + "about": "เกี่ยวกับ", + "rules": "กฎ", + "details": "รายละเอียด", + "tags": "แท็ก" + }, + "facts": { + "joining": "การเข้าร่วม", + "created": "สร้างเมื่อ", + "groupId": "ไอดีกลุ่ม" + } +} diff --git a/src/renderer/src/lib/i18n/locales/th/world.json b/src/renderer/src/lib/i18n/locales/th/world.json index aa76681..57fcc72 100644 --- a/src/renderer/src/lib/i18n/locales/th/world.json +++ b/src/renderer/src/lib/i18n/locales/th/world.json @@ -37,6 +37,34 @@ "copy": "คัดลอก", "copied": "คัดลอกแล้ว" }, + "detail": { + "byPrefix": "โดย", + "stats": { + "playersNow": "ผู้เล่นตอนนี้", + "favorites": "รายการโปรด", + "visits": "การเข้าชม", + "capacity": "ความจุ" + }, + "sections": { + "description": "คำอธิบาย", + "trailer": "ตัวอย่าง", + "details": "รายละเอียด", + "tags": "แท็ก" + }, + "facts": { + "recommended": "แนะนำ", + "popularity": "ความนิยม", + "heat": "ความฮอต", + "version": "เวอร์ชัน", + "published": "เผยแพร่เมื่อ", + "communityLabs": "Community Labs", + "created": "สร้างเมื่อ", + "updated": "อัปเดตเมื่อ", + "worldId": "ไอดีเวิลด์" + }, + "recommendedValue": "{{count}} คน", + "noAuthorTags": "ไม่มีแท็กผู้สร้าง" + }, "instance": { "title": "อินสแตนซ์", "unavailable": "อินสแตนซ์นี้ไม่สามารถใช้งานได้แล้ว",