feat(fuselage-ui-kit): Add `i18n` parser to render surfaces and blocks (#29413)
Co-authored-by: Guilherme Gazzo <5263975+ggazzo@users.noreply.github.com>pull/29264/head^2
parent
1dd51c0b4f
commit
c0fa567246
@ -0,0 +1,6 @@ |
||||
--- |
||||
'@rocket.chat/fuselage-ui-kit': minor |
||||
'@rocket.chat/meteor': minor |
||||
--- |
||||
|
||||
Introducing i18n to UiKit text renderers |
||||
@ -0,0 +1,30 @@ |
||||
import { useTranslation } from '@rocket.chat/ui-contexts'; |
||||
import { parse } from '@rocket.chat/message-parser'; |
||||
import { Markup } from '@rocket.chat/gazzodown'; |
||||
import type { TextObject } from '@rocket.chat/ui-kit'; |
||||
|
||||
import { useUiKitContext } from '../contexts/kitContext'; |
||||
|
||||
const MarkdownTextElement = ({ textObject }: { textObject: TextObject }) => { |
||||
const t = useTranslation() as ( |
||||
key: string, |
||||
args: { [key: string]: string | number } |
||||
) => string; |
||||
const { appId } = useUiKitContext(); |
||||
|
||||
const { i18n } = textObject; |
||||
|
||||
if (i18n) { |
||||
return ( |
||||
<Markup |
||||
tokens={parse(t(`apps-${appId}-${i18n.key}`, { ...i18n.args }), { |
||||
emoticons: false, |
||||
})} |
||||
/> |
||||
); |
||||
} |
||||
|
||||
return <Markup tokens={parse(textObject.text, { emoticons: false })} />; |
||||
}; |
||||
|
||||
export default MarkdownTextElement; |
||||
@ -0,0 +1,25 @@ |
||||
import type { TextObject } from '@rocket.chat/ui-kit'; |
||||
import { Fragment } from 'react'; |
||||
import { useTranslation } from '@rocket.chat/ui-contexts'; |
||||
|
||||
import { useUiKitContext } from '../contexts/kitContext'; |
||||
|
||||
const PlainTextElement = ({ textObject }: { textObject: TextObject }) => { |
||||
const t = useTranslation() as ( |
||||
key: string, |
||||
args: { [key: string]: string | number } |
||||
) => string; |
||||
const { appId } = useUiKitContext(); |
||||
|
||||
const { i18n } = textObject; |
||||
|
||||
if (i18n) { |
||||
return ( |
||||
<Fragment>{t(`apps-${appId}-${i18n.key}`, { ...i18n.args })}</Fragment> |
||||
); |
||||
} |
||||
|
||||
return <Fragment>{textObject.text}</Fragment>; |
||||
}; |
||||
|
||||
export default PlainTextElement; |
||||
Loading…
Reference in new issue