Crowdin::API

A Ruby interface to the Crowdin API.

For more about the Crowdin API see https://crowdin.com/page/api.

WARNING: This is a development version: It contains the latest changes, but may also have severe known issues, including crashes and data loss situations. In fact, it may not work at all.

Installation

Add this line to your application's Gemfile:

gem 'crowdin-api'

And then execute:

$ bundle

Or install it yourself as:

$ gem install crowdin-api

Usage

Start by creating a connection to Crowdin with your credentials:

require 'crowdin-api'
require 'logger'

crowdin = Crowdin::API.new(api_key: API_KEY, project_id: PROJECT_ID, account_key: ACCOUNT_KEY)
crowdin.log = Logger.new $stderr

Now you can make requests to the api.

Add File

Add new file to Crowdin project.

Documentation: https://crowdin.com/page/api/add-file.

First parameter is array of files that should be added to Crowdin project. Every file is hash:

  • :dest - file name with path in Crowdin project (required)
  • :source - uploaded file (required)
  • :title - title for uploaded file (optional)
  • :export_pattern - string that defines name of resulted file (optional)
crowdin.add_file(
  files = [
    { :dest => '/directory/array.xml', :source => 'array.xml', :export_pattern => '/values-%two_letters_code%/%original_file_name%' },
    { :dest => 'strings.xml', :source => 'strings.xml', :title => 'Texts in Application' }
], :type => 'android')

Update File

Upload fresh version of your localization file.

Documentation https://crowdin.com/page/api/update-file

First parameter is array of files that should be updated in Crowdin project. Every file is hash:

  • :dest - file name with path in Crowdin project (required)
  • :source - uploaded file (required)
  • :title - title for uploaded file (optional)
  • :export_pattern - string that defines name of resulted file (optional)
crowdin.update_file(
  files = [
    { :dest => '/directory/array.xml', :source => 'array.xml', :export_pattern => '/values-%two_letters_code%/%original_file_name%'},
    { :dest => 'strings.xml', :source => 'strings.xml' }
])

Delete File

Remove file from Crowdin project.

Documentation https://crowdin.com/page/api/delete-file

crowdin.delete_file('strings.xml')

Create Directory

Create a new directory in Crowdin project.

Documentation: https://crowdin.com/page/api/add-directory

crowdin.add_directory('dirname')

Delete Directory

Remove directory with nested files from Crowdin project.

Documentation: https://crowdin.com/page/api/delete-directory

crowdin.delete_directory('dirname')

Upload Translations

Upload translations made in a third party software or previously made translations.

Documentation: https://crowdin.com/page/api/upload-translation

First parameter is array of translated files that should be added to Crowdin project. Every file is hash:

  • :dest - file names in Crowdin (required)
  • :source - uploaded translation (required)

Second parameter is target language. With a single call it's possible to upload translations for several files but only into one of the languages. Check complete list of Crowdin language codes that can be used.

Optional params:

  • :import_duplicates - defines whether to add translation if there is the same translation previously added (default: false)
  • :import_eq_suggestions - defines whether to add translation if it is equal to source string at Crowdin (default: false)
  • :auto_approve_imported - mark uploaded translations as approved (default: false)
crowdin.upload_translation(
  files = [
    { :dest => 'strings.xml', :source => 'strings_uk.xml' },
    { :dest => 'array.xml', :source => 'array_uk.xml' }
  ],
  language = 'uk',
  params = {:import_duplicates => true}
)

Download Translations

Download last exported translation package (one target language or all languages as one zip file).

Documentation: https://crowdin.com/page/api/download

First parameter is the language of translation you need or download all of them at once.

crowdin.download_translation('ru', :output => '/path/to/download/ru_RU.zip')

Translation Status

Track overall translation and proofreading progress of each target language.

Documentation: https://crowdin.com/page/api/status

crowdin.translations_status

Project Info

Shows project details and meta information (last translations date, currently uploaded files, target languages etc..).

Documentation: https://crowdin.com/page/api/info

crowdin.project_info

Export Translations

Build ZIP archive with the latest translations.

Documentation: https://crowdin.com/page/api/export

crowdin.export_translations

Account Projects

Documentation: https://crowdin.com/page/api/get-projects

Create Project

Documentation: https://crowdin.com/page/api/create-project

Edit Project

Documentation: https://crowdin.com/page/api/edit-project

Delete Project

Documentation: https://crowdin.com/page/api/delete-project

Download Glossary

Documentation: https://crowdin.com/page/api/download-glossary

Upload Glossary

Documentation: https://crowdin.com/page/api/upload-glossary

Download TM

Documentation: https://crowdin.com/page/api/download-tm

Upload TM

Documentation: https://crowdin.com/page/api/upload-tm

Supported Languages

Documentation: https://crowdin.com/page/api/supported-languages

Supported Rubies

Tested with the following Ruby versions:

  • MRI 2.1.2
  • JRuby 1.7

Contributing

  1. Fork it
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Added some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create new Pull Request

License and Author

Author: Anton Maminov ([email protected])

Copyright: 2012-2014 crowdin.com

This library is distributed under the MIT license. Please see the LICENSE file.