🌐 refactor: Interpolate Localization Keys (#10650)

* fix: replace string concatenation of localization keys with interpolations and add keys for unlocalized string literals

* chore: update test for new localization key

---------

Co-authored-by: Danny Avila <danny@librechat.ai>
This commit is contained in:
Dustin Healy 2025-11-25 12:19:49 -08:00 committed by Danny Avila
parent baeed16e21
commit 36be5ac013
No known key found for this signature in database
GPG key ID: BF31EEB2C5CA0956
28 changed files with 130 additions and 85 deletions

View file

@ -19,12 +19,12 @@ const ChatDirection = () => {
</div>
<Button
variant="outline"
aria-label={`${localize('com_nav_chat_direction')}: ${localize('com_ui_x_selected', {
0:
aria-label={localize('com_nav_chat_direction_selected', {
direction:
direction === 'LTR'
? localize('chat_direction_left_to_right')
: localize('chat_direction_right_to_left'),
})}`}
})}
onClick={toggleChatDirection}
data-testid="chatDirection"
>

View file

@ -251,7 +251,9 @@ export default function SharedLinks() {
onClick={() => {
window.open(`/c/${row.original.conversationId}`, '_blank');
}}
aria-label={`${localize('com_ui_view_source')} - ${row.original.title || localize('com_ui_untitled')}`}
aria-label={localize('com_ui_view_source', {
title: row.original.title || localize('com_ui_untitled'),
})}
>
<MessageSquare className="size-4" aria-hidden="true" />
</Button>
@ -262,7 +264,9 @@ export default function SharedLinks() {
setDeleteRow(row.original);
setIsDeleteOpen(true);
}}
aria-label={`${localize('com_ui_delete')} - ${row.original.title || localize('com_ui_untitled')}`}
aria-label={localize('com_ui_delete_shared_link', {
title: row.original.title || localize('com_ui_untitled'),
})}
>
<TrashIcon className="size-4" aria-hidden="true" />
</Button>

View file

@ -1,4 +1,5 @@
import { useState, useCallback, useMemo, useEffect } from 'react';
import { Trans } from 'react-i18next';
import debounce from 'lodash/debounce';
import { useRecoilValue } from 'recoil';
import { TrashIcon, ArchiveRestore, ArrowUp, ArrowDown, ArrowUpDown } from 'lucide-react';
@ -287,12 +288,18 @@ export default function ArchivedChatsTable({
<OGDialog open={isDeleteOpen} onOpenChange={onOpenChange}>
<OGDialogContent
title={localize('com_ui_delete_confirm') + ' ' + (deleteConversation?.title ?? '')}
title={localize('com_ui_delete_confirm', {
title: deleteConversation?.title ?? localize('com_ui_untitled'),
})}
className="w-11/12 max-w-md"
>
<OGDialogHeader>
<OGDialogTitle>
{localize('com_ui_delete_confirm')} <strong>{deleteConversation?.title}</strong>
<Trans
i18nKey="com_ui_delete_confirm_strong"
values={{ title: deleteConversation?.title }}
components={{ strong: <strong /> }}
/>
</OGDialogTitle>
</OGDialogHeader>
<div className="flex justify-end gap-4 pt-4">