solidusio-contrib/solidus_globalize

View on GitHub
README.md

Summary

Maintainability
Test Coverage
# Solidus Globalize

[![CircleCI](https://circleci.com/gh/solidusio-contrib/solidus_globalize/tree/master.svg?style=svg)](https://circleci.com/gh/solidusio-contrib/solidus_globalize/tree/master)[![Code Climate](https://codeclimate.com/github/solidusio-contrib/solidus_globalize/badges/gpa.svg)](https://codeclimate.com/github/solidusio-contrib/solidus_globalize)

This is the globalization project for [Solidus][1].

**NOTE:** If you just need to change the language of your store, and will only
have data in database in one language, then you don't need this gem,
use [solidus_i18n][8], which provides translations for static content (links,
headers etc).

This gem adds the **model data** translation support using the [Globalize][3] gem.
[Read more](#model-translations)

Happy translating!

---

## Installation

Add the following to your `Gemfile`:

```ruby
gem 'solidus_globalize', github: 'solidusio-contrib/solidus_globalize'
```

For Ruby 3.x you have to force the usage of the friendly_id-globalize master version:

```ruby
gem 'friendly_id-globalize', github: 'norman/friendly_id-globalize', branch: "master"
gem 'solidus_globalize', github: 'solidusio-contrib/solidus_globalize'
```


Run `bundle install`

You can use the generator to install migrations and append solidus_globalize assets to
your app solidus manifest file.

    bin/rails g solidus_globalize:install

This will insert this line into your solidus manifest file
(`vendor/assets/javascripts/spree/backend/all.js`):

```js
//= require spree/backend/solidus_globalize
```

---

## Model Translations

This feature uses the [Globalize][3] gem to localize model data.
So far the following models are translatable:

    Product, Promotion, OptionType, Taxonomy, Taxon, Property and ShippingMethod.

Start your server and you should see a TRANSLATIONS link or a flag icon on each
admin section that supports this feature.

To enable adding translations in admin for a specific language you have to set
into an initializer:

```ruby
SolidusGlobalize::Config.supported_locales = [:en, :'pt-BR']
```

**PS 1.** The languages you add to this configuration need to be supported by
your store. This means that you need to have a transations file for them
into `/config/locales/` (eg. `/config/locales/pt-BR.yml`).

**PS 2.** Please use symbols, not strings. e.g. `:'pt-BR'` not just `'pt-BR'`.
Otherwise you may get unexpected errors

Or if you prefer they're also available on the admin UI general settings section.

*Every record needs to have a translation. If by any chance you remove `solidus_globalize`
from your Gemfile, add some records and then add `solidus_globalize` gem back you might get
errors like ``undefined method for nilClass`` because Globalize will try fetch
translations that do not exist.*

---

## Contributing

[See corresponding guidelines][7]

---

Copyright (c) 2020 [Soldius][1] and other [contributors][5].
Released under the [New BSD License][6]

[1]: https://solidus.io
[3]: https://github.com/globalize/globalize
[5]: https://github.com/solidusio-contrib/solidus_globalize/graphs/contributors
[6]: https://github.com/solidusio-contrib/solidus_globalize/blob/master/LICENSE.md
[7]: https://github.com/solidusio-contrib/solidus_globalize/blob/master/CONTRIBUTING.md
[8]: https://github.com/solidusio-contrib/solidus_i18n