phraseapp-in-context-editor-ruby is the official library for integrating Phrase Strings In-Context Editor with i18n in your Ruby application.
To use phraseapp-in-context-editor-ruby with your application you have to:
- Sign up for a Phrase account: https://app.phrase.com/signup
- Use the excellent i18n gem also used by Rails
You can find a demo project in the examples/demo
folder, just run bundle && rails s
and head to http://127.0.0.1:3000
Login via the demo credentials [email protected]
/ phrase
NOTE: You can not use the old version of the ICE with integration versions of >2.0.0, you have to instead use 1.x.x versions as before
gem install phraseapp-in-context-editor-ruby
Add it to your Gemfile
gem 'phraseapp-in-context-editor-ruby
You can also build it directly from source to get the latest and greatest:
bundle && gem build
Create the initializer file by executing the Rails generator:
rails generate phraseapp_in_context_editor:install --account_id=<YOUR_ACCOUNT_ID> --project-id=<YOUR_PROJECT_ID>
# install deps
bundle
Add the following Ruby snippet to your rails app/views//layouts/application.html.erb
<%= load_in_context_editor %>
And the following config to your /config/initializers/phraseapp_in_context_editor.rb
config.enabled = true
config.project_id = "YOUR_PROJECT_ID"
config.account_id = "YOUR_ACCOUNT_ID"
config.datacenter = "eu"
You can find the Project-ID in the Project overview in the PhraseApp Translation Center. You can find the Account-ID in the Organization page in the PhraseApp Translation Center.
If this does not work for you, you can also integrate the JavaScript snippet manually.
Old version of the ICE is not available since version 2.0.0. If you still would rather use the old version, please go back to 1.x.x versions.
In addition to the settings in your config/initializers/phraseapp_in_context_editor.rb
, set the US datacenter to enable the ICE to work with the US endpoints.
config.enabled = true
config.project_id = "YOUR_PROJECT_ID"
config.account_id = "YOUR_ACCOUNT_ID"
config.datacenter = "us"
The script will automatically get the nonce from content_security_policy_nonce
The content_security_policy.rb has to have :strict_dynamic
for policy.script_src
since we are loading more scripts dynamically because of our way of deploying
policy.script_src :self, :https, :strict_dynamic
policy.style_src :self, :https
The config.content_security_policy_nonce_directives = %w[script-src style-src]
can include style-src
but this might break some styling in some cases
This library might not work out of the box for some older browser or IE11. We recommend to add Babel to the build pipeline if those browser need to be supported.
The library adds custom functionality to the i18n
package. When config.enabled = true
this gem modifies the outcoming values from translation functions to present a format which the ICE can read.
Run unit tests using jest:
rspec
We welcome anyone who wants to contribute to our codebase, so if you notice something, feel free to open a Pull Request! However, we ask that you please use the Conventional Commits specification for your commit messages and titles when opening a Pull Request.
Example: chore: Update README
Please use GitHub issues to share your problem, and we will do our best to answer any questions or to support you in finding a solution.
Detailed changes for each release are documented in the changelog.