![Oracle Drags Its Feet in the JavaScript Trademark Dispute](https://cdn.sanity.io/images/cgdhsj6q/production/919c3b22c24f93884c548d60cbb338e819ff2435-1024x1024.webp?w=400&fit=max&auto=format)
Security News
Oracle Drags Its Feet in the JavaScript Trademark Dispute
Oracle seeks to dismiss fraud claims in the JavaScript trademark dispute, delaying the case and avoiding questions about its right to the name.
Rails I18n library for ActiveRecord model/data translation using PostgreSQL's JSONB datatype or MySQL's JSON datatype. It provides an interface inspired by Globalize3 but removes the need to maintain separate translation tables.
gem install json_translate
When using bundler, put it in your Gemfile:
source 'https://rubygems.org'
gem 'activerecord'
# PostgreSQL
gem 'pg', :platform => :ruby
gem 'activerecord-jdbcpostgresql-adapter', :platform => :jruby
# or MySQL
gem 'mysql2', :platform => :ruby
gem 'activerecord-jdbcmysql-adapter', :platform => :jruby
gem 'json_translate'
Model translations allow you to translate your models' attribute values. E.g.
class Post < ActiveRecord::Base
translates :title, :body
end
Allows you to translate the attributes :title and :body per locale:
I18n.locale = :en
post.title # => This database rocks!
I18n.locale = :he
post.title # => אתר זה טוב
You also have locale-specific convenience methods from easy_globalize3_accessors:
I18n.locale = :en
post.title # => This database rocks!
post.title_he # => אתר זה טוב
To find records using translations without constructing JSON queries by hand:
Post.with_title_translation("This database rocks!") # => #<ActiveRecord::Relation ...>
Post.with_title_translation("אתר זה טוב", :he) # => #<ActiveRecord::Relation ...>
In order to make this work, you'll need to define an JSON or JSONB column for each of your translated attributes, using the suffix "_translations":
class CreatePosts < ActiveRecord::Migration
def up
create_table :posts do |t|
t.column :title_translations, 'jsonb' # or 'json' for MySQL
t.column :body_translations, 'jsonb'
t.timestamps
end
end
def down
drop_table :posts
end
end
It is possible to enable fallbacks for missing translations. It will depend on the configuration setting you have set for I18n translations in your Rails config.
You can enable them by adding the next line to config/application.rb
(or
only config/environments/production.rb
if you only want them in production)
config.i18n.fallbacks = true
Sven Fuchs wrote a detailed explanation of the fallback mechanism.
If you've enabled fallbacks for missing translations, you probably want to disable them in the admin interface to display which translations the user still has to fill in.
From:
I18n.locale = :en
post.title # => This database rocks!
post.title_nl # => This database rocks!
To:
I18n.locale = :en
post.title # => This database rocks!
post.disable_fallback
post.title_nl # => nil
You can also call your code into a block that temporarily disable or enable fallbacks.
I18n.locale = :en
post.title_nl # => This database rocks!
post.disable_fallback do
post.title_nl # => nil
end
post.disable_fallback
post.enable_fallback do
post.title_nl # => This database rocks!
end
By default, empty String values are not stored, instead the locale is deleted.
class Post < ActiveRecord::Base
translates :title
end
post.title_translations # => { en: 'Hello', fr: 'Bonjour' }
post.title_en = ""
post.title_translations # => { fr: 'Bonjour' }
Activating allow_blank: true
enables to store empty String values.
class Post < ActiveRecord::Base
translates :title, allow_blank: true
end
post.title_translations # => { en: 'Hello', fr: 'Bonjour' }
post.title_en = ""
post.title_translations # => { en: '', fr: 'Bonjour' }
nil
value delete the locale key/value anyway.
post.title_en = nil
post.title_translations # => { fr: 'Bonjour' }
FAQs
Unknown package
We found that json_translate demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 2 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
Oracle seeks to dismiss fraud claims in the JavaScript trademark dispute, delaying the case and avoiding questions about its right to the name.
Security News
The Linux Foundation is warning open source developers that compliance with global sanctions is mandatory, highlighting legal risks and restrictions on contributions.
Security News
Maven Central now validates Sigstore signatures, making it easier for developers to verify the provenance of Java packages.