What would be nice is if JavaScript had a built-in way to do what I can do in Ruby with:
> I18n.interpolate('Hi, %{name}', name: 'Fred')
=> "Hi, Fred"
But to be fair, I18n comes from i18n library, so JS could just as easily (and I'm sure does) have a library that does the same thing.
Update: Actually, you can do this in plain Ruby (so why do we even need I18n.interpolate
?):
main > "Hi, %{name}" % {name: 'Fred'}
=> "Hi, Fred"
main > ? String#%
From: string.c (C Method):
Owner: String
Visibility: public
Signature: %(arg1)
Number of lines: 9
Format---Uses str as a format specification, and returns the result
of applying it to arg. If the format specification contains more than
one substitution, then arg must be an Array or Hash
containing the values to be substituted. See Kernel::sprintf for
details of the format string.
"%05d" % 123 #=> "00123"
"%-5s: %016x" % [ "ID", self.object_id ] #=> "ID : 00002b054ec93168"
"foo = %{foo}" % { :foo => 'bar' } #=> "foo = bar"
I guess that built-in version is fine for simple cases. You only need to use I18n.translate
if you need its more advanced features like I18n.config.missing_interpolation_argument_handler
.