cld3-ruby is an interface of Compact Language Detector v3 (CLD3) for Ruby.
Ruby C++
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.
ext/cld3 Update CLD3 to 484afe9ba7438d078e60b3a26e7fb590213c0e17 Feb 1, 2018
lib Make CLD3::Unstable private Jan 22, 2018
.gitignore Initial commit May 6, 2017
.gitmodules Initial commit May 6, 2017
.travis.yml Change OS configuration for Travis CI Feb 17, 2018
Gemfile Initial commit May 6, 2017
LICENSE Update Jan 22, 2018
Rakefile Use path option for bundler Jun 13, 2017
cld3.gemspec Version 3.2.2 Dec 25, 2017


cld3-ruby is an interface of Compact Language Detector v3 (CLD3) for Ruby.


require 'cld3'

cld3 =, 1000)

cld3.find_language("こんにちは") # => #<struct Struct::Result language=:ja, probability=1.0, reliable?=true, proportion=1.0>

cld3.find_language("This is a pen.") # => #<struct Struct::Result language=:en, probability=0.9999408721923828, reliable?=true, proportion=1.0>

cld3.find_language("здравствуйте") # => #<struct Struct::Result language=:ru, probability=0.3140212297439575, reliable?=false, proportion=1.0>




I (Akihiko Odaki) recommend to setup this library installing via gem.

You can also build this library by yourself. Rakefile includes a Rake task to put this code into files buildable as a gem. Build a gem with rake command.

Platform-specific information


JRuby has a bug which prevents the feature detection. Apply the following change:


Ruby has a bug which recognizes non-fatal linker warnings as fatal. Apply the following patch to Ruby to workaround the bug.

--- a/lib/mkmf.rb
+++ b/lib/mkmf.rb
@@ -657,7 +657,7 @@ def with_ldflags(flags)
   def try_ldflags(flags, opts = {})
-    try_link(MAIN_DOES_NOTHING, flags, {:werror => true}.update(opts))
+    try_link(MAIN_DOES_NOTHING, flags, {:werror => false}.update(opts))
   def append_ldflags(flags, *opts)


gem install cld3 triggers native library building. If it fails, you are likely to missing required facilities. Make sure C++ compiler and protocol buffers is installed. I recommend GCC as a C++ compiler. Ruby is likely to need pkg-config as well.

Runtime errors are likely to be issues of FFI or programming errors. Make sure they are all correct.

If you cannot identify the cause of your problem, run spec of this library and see whether the problem is reproducable with it or not. Spec is not included in the gem, so clone the source code repository and then run rake spec. The source code repository is at

In case you cannot solve your problem by yourself and cannot help abandoning or find an issue in this library, please open an issue at

If you found an issue and managed to fix it and agree to share the fix under Apache-2.0, please open a pull request at Your contribution would be appreciated by other users and recorded with Git.


The version has 3 parts: major, minor, and patch. They are joined with . as delimiters in the order.

The increment of the major version and the minor version indicates it can involve any change.

The increment of the patch version indicates there is no change of the supported languages and no change of the existing APIs.


To ask questions or report issues please open issues at


This program was written by Akihiko Odaki and other contributors. CLD3 was written by its own authors.