Txdb, a mashup of "Transifex" and "database", is an automation tool that facilitates translating database content with Transifex, a popular translation management system.
Configuration is done in the YAML file format. Here's an example:
databases:
- adapter: mysql2
backend: globalize
username: txdb_user
password: passpasspass
host: my-host.com
port: 3306
name: mydb_production
pool: 10
locales:
- de
- es
- fr
- pt
- ja
- ko
source_locale: en
transifex:
organization: my-org
project_slug: my-project
username: txgh.user
password: passpasspass
webhook_secret: secretsecretsecret
tables:
- name: product_translations
columns:
- name
- description
The root of the config hierarchy is an array of databases. Each one specifies how to connect to a specific database, which backend to use (see below), what Transifex project it's associated with, and which tables and columns to sync. Txdb will upload a new resource for each table.
Txdb supports two different ways of accessing configuration, raw text and a file path. In both cases, config is passed via the TXDB_CONFIG
environment variable. Prefix the raw text or file path with the appropriate scheme, raw://
or file://
, to indicate which strategy Txgh should use.
Passing raw config to Txdb can be done like this:
export TXDB_CONFIG="raw://big_yaml_string_here"
When Txdb starts up, it will use the YAML payload that starts after raw://
.
It might make more sense to store all your config in a file. Pass the path to Txdb like this:
export TXDB_CONFIG="file://path/to/config.yml"
When Txdb runs, it will read and parse the file at the path that comes after file://
.
Of course, in both the file and the raw cases, environment variables can be specified via export
or inline when starting Txdb.
Backends provide different strategies for syncing content between Transifex and your database. They are made up of a reader and a writer. Currently the only supported backend is the Globalize backend, which understands the database translation strategy used by the Globalize gem. Adding additional backends is straightforward. Use the Globalize backend as a model to create the reader, writer, and backend classes, then register your new backend:
Txdb::Backends.register(
'my-cool-backend', MyModule::MyBackendClass
)
Txdb contains a number of HTTP endpoints for triggering uploads and downloads to and from Transifex. However, they're largely untested as of this writing. We suggest you write small scripts instead. The endpoints may be improved later, but right now it's not a priority.
require 'txdb'
Txdb::Config.databases.each do |database|
Txdb::Downloader.download_all(database)
end
When running this script, make sure you set the TXDB_CONFIG
environment variable.
require 'txdb'
Txdb::Config.databases.each do |database|
Txdb::Uploader.upload(database)
end
When running this script, make sure you set the TXDB_CONFIG
environment variable.
Txdb uses the popular RSpec test framework and has a comprehensive set of unit tests. To run the test suite, run bundle exec rspec
.
Txdb requires an Internet connection to access the Transifex API and some kind of database. You will configure which database to use in the configuration file.
Txdb was developed with Ruby 2.1.6, but is probably compatible with all versions between 2.0 and 2.3, and maybe even 1.9. Your mileage may vary when running on older versions of Ruby.
This project is maintained by Cameron Dutro.
Licensed under the Apache License, Version 2.0. See the LICENSE file included in this repository for the full text.