Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

React-Native, create dynamic string related to i18n

I'm using react-native-i18n to develop a multi-locale app. In some strings I have to put a dynamic string like:

var str = 'Hello dear '+ user.name +', good morning!'

I don't want to define two params in languages json files (due to makes my code dirty and some langs are different in motion) to have such code:

var str = lang.t('hello')+ ' ' + user.name + lang.t('goodMorning')

I need a syntax like what we have in Java and C#:

var str = string.format(lang.t('helloMorning'), user.name)

/////////////// en.json:

{ "helloMorning":"Hello dear %s, good morning!" }

like image 762
Alireza Akbari Avatar asked Nov 15 '25 13:11

Alireza Akbari


2 Answers

use i18n hook

const { t, i18n } = useTranslation();

define translation json

{"greeting": "Hello, {{name}}.Good morning!"}

jsx

{t('greeting', { name: "sumit" })};
like image 63
Sumit Asagaonkar Avatar answered Nov 17 '25 09:11

Sumit Asagaonkar


Define your translations like this.

{
  "greeting": "Hello, %{name}. Good morning!"
}

And then in your render, pass parameters like this.

i18n.t('greeting', {
  name: 'Ali'
})
like image 40
alizahid Avatar answered Nov 17 '25 09:11

alizahid