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-rubyAdd 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 buildCreate 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
bundleAdd 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, :httpsThe 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:
rspecWe 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.