Skip to content

Reading context dynamically per tFunction, TransComponent #243

@jlee0425

Description

@jlee0425

🚀 Feature Proposal

Improve parser.js to read ConditionalExpression to parse context.

Motivation

My project heavily uses i18n and sometimes context is necessary.
Problem is that each translation will have different values for the context and only a few of the keys actually use a context, and the current parser parses tOptions only when attr.value.type is one of: Literal, Identifier or ObjectExpression.

Example

What I would like to do is:

const { t } = useTranslation();

// component
<Trans 
  i18nKey="some.key"
  defaults="translated string"
  tOptions={{context: isTrue ? 'contextValue' : 'somethingelse'}}
/>

// better yet,
<Trans 
  i18nKey="some.key"
  defaults="translated string"
  context={isTrue ? 'contextValue' : 'somethingelse'}
/>

t('some.key2', 'translated string2', {context: isTrue ? 'withContext' : undefined});

// scanned
{
  "some.key": "translated string",
  "some.key_contextValue: "translated string",
  "some.key_somethingelse: "translated string",
  "some.key2": "translated string2",
  "some.key2_withContext": "translated string2",
}

Then, I would modify the translation with context accordingly.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions