AwesomeTranslations
Install
gem 'awesome_translations'
gem 'sqlite3', group: :development
AT uses SQLite3 for creating a database containing a farily large cache.
Then run the following:
bundle exec rake awesome_translations:install
Insert this into your "routes.rb" file:
mount AwesomeTranslations::Engine => "/awesome_translations" if Rails.env.development?
Translations under controllers and models
If you want to do translations from your models or controllers, you will need to add this to a new initializer file under "config/initializers/awesome_translations.rb"
AwesomeTranslations.load_object_extensions
If you don't like monkey patching the Object-class, you can also include it into ApplicationRecord' by inserting something like this to allow t-method-calls from inside models:
class ApplicationRecord < ActiveRecord::Base
include AwesomeTranslations::TranslateFunctionality
end
You will also need to modify the line in your Gemfile a bit:
gem 'awesome_translations'
Helper translations
The t-method translates like from inside a view in Rails. To get around this, you can call 'helper_t' instead. Start by including that method in your helpers by adding this to ApplicationHelper:
module ApplicationHelper
include AwesomeTranslations::ViewsHelper
end
Controller translations without action in key
Start by including this in your ApplicationController:
class ApplicationController
include AwesomeTranslations::ControllerTranslateFunctionality
Then you can use the controller_t
-method like this:
class UsersController < ApplicationController
def create
flash[:notice] = controller_t('.user_was_saved')
end
end
This is an example of how it works and what the difference is:
module ApplicationHelper
include AwesomeTranslations::ApplicationHelper
# Sample method with translation
def hello_world
t('.hello_world') #=> translates with key '#{controller_name}.#{action_name}.hello_world'
return helper_t('.hello_world') #=> translates with key 'helpers.application_helper.hello_world'
end
end
Translating your application
Start a Rails server for your project and go to the namespace called something like "http://localhost:3000/awesome_translations". Start translating your app through the webinterface.
License
This project rocks and uses MIT-LICENSE.