i18n: localize hardcoded UI strings across 10 components

Wraps the hardcoded strings flagged in LOTUS_BUGS.md (Localization rows)
in t() via react-i18next, and adds the keys to public/locales/en.json
under the existing Organisms.* namespace. de.json intentionally left to
fall back to en for now (fallbackLng: 'en') rather than fabricate
translations.

Files: CreateRoomTypeSelector, ImageViewer, MsgTypeRenderers (MLocation),
Reply (ThreadIndicator), ImageContent, DeviceVerification (5 subcomponents),
UrlPreviewCard (DiscordCard), InviteUserPrompt, UploadBoard, PasswordStage.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
2026-06-26 17:43:36 -04:00
parent 7b94eeaa60
commit 1a5896ef84
11 changed files with 104 additions and 36 deletions
@@ -1,4 +1,5 @@
import React from 'react';
import { useTranslation } from 'react-i18next';
import { Box, Text, Icon, Icons, config, IconSrc } from 'folds';
import { SequenceCard } from '../sequence-card';
import { SettingTile } from '../setting-tile';
@@ -17,6 +18,7 @@ export function CreateRoomTypeSelector({
disabled,
getIcon,
}: CreateRoomTypeSelectorProps) {
const { t } = useTranslation();
return (
<Box shrink="No" direction="Column" gap="100">
<SequenceCard
@@ -36,10 +38,10 @@ export function CreateRoomTypeSelector({
>
<Box gap="200" alignItems="Baseline">
<Text size="H6" style={{ flexShrink: 0 }}>
Chat Room
{t('Organisms.CreateRoom.chat_room')}
</Text>
<Text size="T300" priority="300" truncate>
- Messages, photos, and videos.
- {t('Organisms.CreateRoom.chat_room_desc')}
</Text>
</Box>
</SettingTile>
@@ -61,10 +63,10 @@ export function CreateRoomTypeSelector({
>
<Box gap="200" alignItems="Baseline">
<Text size="H6" style={{ flexShrink: 0 }}>
Voice Room
{t('Organisms.CreateRoom.voice_room')}
</Text>
<Text size="T300" priority="300" truncate>
- Live audio and video conversations.
- {t('Organisms.CreateRoom.voice_room_desc')}
</Text>
<BetaNoticeBadge />
</Box>