Skip to content

Instantly share code, notes, and snippets.

@bazzel
Last active March 20, 2022 22:00
Show Gist options
  • Star 21 You must be signed in to star a gist
  • Fork 4 You must be signed in to fork a gist
  • Save bazzel/ecdff4718962e57c2d5569cf01d332fe to your computer and use it in GitHub Desktop.
Save bazzel/ecdff4718962e57c2d5569cf01d332fe to your computer and use it in GitHub Desktop.
Webpacker and I18n
$ rails new my-i8n --webpack

Gemfile

gem 'i18n-js'
$ bundle --binstubs
$ yarn add i18n-js
$ bin/rails webpacker:install:erb

app/javascript/i18n-js/index.js.erb

import I18n from "i18n-js"
I18n.translations = <%= I18n::JS.filtered_translations.to_json %>;
export default I18n

app/javascript/packs/application.js

import I18n from 'i18n-js/index.js.erb'
console.log(I18n.t('hello'))
$ bin/rails g controller welcome index

config/routes.rb

root 'welcome#index'

app/views/layouts/application.html.erb

<%= javascript_pack_tag 'application', 'data-turbolinks-track': 'reload' %>
$ bin/rails s
@dev-alihaider
Copy link

Great

@fongfan999
Copy link

Awesome

@Uepsilon
Copy link

👍 thanks man, that saved me at least a few hours.

@nathan-ch
Copy link

nathan-ch commented Sep 29, 2020

Hi, we are changing our front end to use only React as a Single Page Application inside the Rails app with Webpacker.

I wonder if i can use i18n-js to translate html generated from React.
With this piece of code, i am able to receive translations in React code but the js import of I18n only gives defaultLocale, not the currentLocale.
I can write code to get currentLocal from localStorage or cookies easily but is there a way to handle url without rewriting the detection functions in js ?

@t3k4y
Copy link

t3k4y commented Nov 30, 2020

Anyone managed to combine this with jest tests?

@m-andreas
Copy link

m-andreas commented Jul 19, 2021

Thanks for the Hint @kfiltschew! So you can just use:

import I18n from "i18n-js"
I18n.translations = <%= I18n::JS.filtered_translations.to_json %>;
I18n.locale = "<%= I18n.locale %>";
export default I18n

in i18n-js/index.js.erb

@huzaifa-malik
Copy link

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment