phraseapp-in-context-editor-ruby
phraseapp-in-context-editor-ruby is the official library for integrating Phrase Strings In-Context Editor with i18n in your Ruby application.
:scroll: Documentation
Prerequisites
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
Demo
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
Installation
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
via Gem
gem install phraseapp-in-context-editor-ruby
via Bundler
Add it to your Gemfile
gem 'phraseapp-in-context-editor-ruby
Build from source
You can also build it directly from source to get the latest and greatest:
bundle && gem build
Initialized config file
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>
Development
# install deps
bundle
Configure
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.
Using the US Datacenter with ICE
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"
Using with CSP
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
Browser support
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.
How does it work
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.
Test
Run unit tests using jest:
rspec
:white_check_mark: Commits & Pull Requests
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
:question: Issues, Questions, Support
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.
:memo: Changelog
Detailed changes for each release are documented in the changelog.