Security News
Create React App Officially Deprecated Amid React 19 Compatibility Issues
Create React App is officially deprecated due to React 19 issues and lack of maintenance—developers should switch to Vite or other modern alternatives.
Simple, zero-dependant enum
translation gem for Rails
gem install translate_enum
Here is a regular use case. ActiveRecord model:
class Post < ActiveRecord::Base
include TranslateEnum
enum status: { published: 0, archive: 1 }
translate_enum :status
end
Localization file
en:
activerecord:
attributes:
post:
status_list:
published: Was published
archive: Was archived
Or if you wish your locales to be available across all models
en:
attributes:
status_list:
published: Was published
archive: Was archived
Post.translated_status(:published) #=> "Was published"
Post.translated_statuses => [["Was published", :published, 0], ["Was archived", :archive, 1]]
@post = Post.new(status: :published)
@post.translated_status #=> "Was published"
# Each `translated` method supports
# I18n.translate attributes:
Post.translated_status(:published, raise: true, throw: true, locale: :en, count: 10)
= form_for @post do |f|
= f.select :status, options_for_select(f.object.class.translated_statuses.map { |translation, k, _v| [translation, k] })
Be default you should extend each ActiveRecord
model manually by including TranslateEnum
module in it.
You can extend ActiveRecord
by requiring translate_enum/active_record
in initializer or inside yout Gemfile
:
Gemfile:
gem 'translate_enum', require: 'translate_enum/active_record'
Initializer:
# config/initializers/translate_enum.rb
require 'translate_enum/active_record'
class User < ActiveRecord::Base
enum gender: [:male, :female]
translate_enum :gender do |tr|
tr.i18n_scope = 'activerecord.attributes'
tr.i18n_key = 'gender_list'
tr.enum_klass_method_name = 'genders'
tr.enum_instance_method_name = 'gender'
tr.method_name_singular = 'translated_gender'
tr.method_name_plural = 'translated_genders'
end
# Or even provide your own logic
def self.translated_gender(key)
I18n.t(key, scope: 'global.gender_list')
end
end
en:
activerecord:
attributes:
person:
gender_list:
male:
zero: No males
one: One male
other: %{count} males
Person.translated_gender(:make, count: 0) #=> "No males"
Person.translated_genders => [["One male", :male, 0]] # and others
Person.translated_genders(count: 0) => [["No males", :male, 0]] # and others
@person = Person.new(gender: :male)
@person.translated_gender #=> "One male"
@person.translated_gender(count: 10) #=> "10 Males"
Example for Grape:
class Feedback < ApplicationRecord
include TranslateEnum
enum topic: {
question: 'question', issue: 'issue', complaint: 'complaint', offer: 'offer',
investment: 'investment'
}
translate_enum :topic
end
class FeedbacksApi < Grape::API
resource :feedbacks do
get 'enums' do
present Feedback.method(:translated_topics), with: TranslateEnumSerializer
end
end
end
class TranslateEnumSerializer < Grape::Entity
expose :enum, as: ->(method) { method.name[/translated_(.*)/, 1] } do |method|
method.call.map do |translation, key, _value|
{ value: key, translation: translation }
end
end
end
curl http://localhost:3000/feedbacks/enums
{
"topics": [
{
"value": "question",
"translation": "Vopros"
},
{
"value": "issue",
"translation": "Problema"
},
{
"value": "complaint",
"translation": "Zhaloba"
},
{
"value": "offer",
"translation": "Predlozhenie"
},
{
"value": "investment",
"translation": "Invisticii"
}
]
}
FAQs
Unknown package
We found that translate_enum demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer 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
Create React App is officially deprecated due to React 19 issues and lack of maintenance—developers should switch to Vite or other modern alternatives.
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.