Introduction

Aigu is a set of utility to process localization files to genarate JSON files to push to Accent service. Pulling from Accent to update localization files is also supported.

The following localization file formats are supported: Rails YAML, Android XML, Java Enum Core, iOS strings and stringsdict.

Merge and unmerge commands allows to merge different source files into a single JSON file to send as a single Accent project.

Push and pull can be used to interact directly with Accent.

Installation

Add these lines to your application’s Gemfile as development dependancies:

group :development do
  gem 'aigu'
end

Usage

Aigu provides an executable named aigu.

Exporting the JSON file for Accent

The export command looks for YAML localization files and generates a JSON file. This file will then be compatible with Accent.

$ aigu export --locale=fr --input-directory=config/locales --output-file=my-project.json

Options

Option Description
locale The locale used to find localization files. Files that match *.<locale>.yml in the input directory will be processed.
input-directory The directory used to find localization files
output-file The path to the JSON file that will be written by aigu
ignore The patterns aigu will use to skip ignored files (eg. routes.yml)
Command File format
export Rails YAML
andoird_export Android XML
core_export Java Enum Core
ios_export iOS strings & stringsdict

Importing the JSON file from Accent

The import command takes a generated JSON file from Accent and generates the original YAML file structure.

$ aigu import --locale=fr --input-file=file-from-accent.json --output-directory=config/locales

Options

Option Description
locale The locale used to generate localization files. Files will be generated as <file>.<locale>.yml
input-file The path to the Accent-generated JSON file
output-directory The directory where the localization YAML files will be generated
Command File format
import Rails YAML
andoird_import Android XML
core_import Java Enum Core
ios_import iOS strings & stringsdict

Merge

The merge command will combine several JSON file into a single one to send into a single Accent project. It will prefix keys with a pattern embedding the filename to allow later unmerging. It works from an input directory, mergin all json files in it. A file can be named default.json to avoid prefixes in the resulting json.

Options

Option Description
input-directory The directory containing json files to merge
output-file The path to the JSON file that will be written to

Unmerge

The unmerge will split the Accent JSON file into several json files, for further processing. It will look for the prefix pattern of the merge command and will extract the filename or use default.json if pattern is not found.

Options

Option Description
input-file The path to the Accent-generated JSON file
output-directory The directory where the unmerged files will be written

Sending to Accent

The push command takes a JSON file exported by Aigu and send it to Accent

Options

Option Description
input-file The path to the Aigu-generated JSON file
accent-api-key The API key of the Accent project. (See project config in Accent)
accent-url The URL to the instance of Accent to use (Prod: http://accent.mirego.com, QA: https://mirego-accent-qa.herokuapp.com )

Pulling from Accent

The pull command GET the Accent generated JSON file

Options

Option Description
output-file The path to write the Accent JSON file to
accent-api-key The API key of the Accent project. (See project config in Accent)
accent-url The URL to the instance of Accent to use (Prod: http://accent.mirego.com, QA: https://mirego-accent-qa.herokuapp.com )

Using .aigu.yml

Instead of using command-line arguments when running the aigu command, you can create a .aigu.yml file at the root of your project and hard-code options in that file.

ignore:
  - routes.yml
  - rails/**/*.yml
output-directory: config/locales
input-directory: config/locales

Contributing

We’re using phare to make sure all Ruby code adheres to our coding style guide. The best way to use phare is as a pre-commit hook:

$ ln -s "`pwd`/bin/phare" .git/hooks/pre-commit

That way, whenever git commit is ran, phare will be executed and will abort the commit if there are errors.

License

Aigu is © 2014 Mirego and may be freely distributed under the New BSD license. See the LICENSE.md file.

About Mirego

Mirego is a team of passionate people who believe that work is a place where you can innovate and have fun. We're a team of talented people who imagine and build beautiful Web and mobile applications. We come together to share ideas and change the world.

We also love open-source software and we try to give back to the community as much as we can.