Koha Solutions

Multilingual

Multilingual Koha — Catalogs in Any Language or Script

Arabic, Urdu, Chinese and mixed-script collections — cataloged, searched and displayed properly, in a catalog we host for you.

A library catalog showing search results in a non-Latin script, including a right-to-left record

If you have seen this before

Most library software is built English-first

And it fights you in four specific ways. If you recognise these, you have already worked out that “supports multiple languages” on a feature list means very little.

Our records display as question marks or boxes.
Search only works if the reader types in English.
Right-to-left titles render backwards in the catalog.
Our collection is mixed-script and nothing sorts correctly.

Boxes instead of characters is an encoding fault. Search that only works in English is a matching fault. Backwards titles are a layout fault. Nothing sorting correctly is a collation fault. They are four different problems with four different fixes, and a vendor who treats them as one has not shipped a catalog in your script.

What multilingual has to mean

Four layers, not one feature

A catalog is only usable in your language if every one of these is right. Getting three of four is what produces the complaints above.

The four layers of a multilingual library catalog — storage, cataloging, search and display

Storage

Unicode end to end — the database, the application, the export files and, critically, the import path. Most corruption happens on the way in, not in storage.

Cataloging

MARC21 with the right character encoding, so a record round-trips through export and import without degrading. Legacy encodings are converted deliberately during migration rather than assumed.

Search

Matching that works in the reader’s own script — exact and partial words in Arabic, Urdu, Chinese or anything else — instead of requiring a romanisation the reader has to guess at.

Display

Correct rendering, right-to-left layout where the language needs it, and sorting configured and checked against your own records rather than left at a default.

The distinction that saves a phone call

Interface language is not content language

Almost every enquiry starts by conflating these two, and they are separate pieces of work with separate costs.

Interface language

The labels, buttons and menus — “Search”, “My account”, “Place hold”. This is translation work, and it is finite: a fixed set of strings, translated once and maintained.

We ship English, Urdu, Arabic, French and Chinese, with right-to-left layout applied automatically for Urdu and Arabic. Another language is a translation project with a known shape, not a research question.

Content language

Your actual records — titles, authors, subjects, notes — in whatever scripts your collection uses. This is not translation. It is storage, encoding, matching and rendering.

This works in any Unicode script, independently of which interface languages exist. A library can run an English interface over an entirely Arabic collection, or the reverse, or both at once in a mixed-script catalog.

The expensive mistake

Migrating legacy non-Latin data

This is the highest-risk moment in the whole project, and it is irreversible if it goes wrong quietly.

Older library systems predate Unicode being the default and store non-Latin text in whatever encoding was normal at the time. A migration that reads those bytes as UTF-8 without converting them produces mojibake — the characters are not wrong, they are gone, and the original is only recoverable if you still have the source system.

What makes this worse than an ordinary data fault is that it is invisible to whoever is running the migration. A validation script counting records reports complete success over text that has become unreadable, and an engineer who does not read the script cannot tell the difference by looking.

So the conversion is deliberate — we determine the source encoding rather than assume it — and the check is human: a sample of converted records is put in front of someone at your library who reads the language, before anything is committed. That step costs an hour and it is the only thing that actually catches this.

How our migrations work

What we have actually built

Urdu, Arabic and right-to-left catalogs — specific and checkable

Described as narrowly as it is true. Where something works for two languages rather than all of them, it says two.

Right-to-left as a layout, not a patch

Text direction is derived from the language rather than bolted on, so the whole interface mirrors — navigation, forms and result lists — instead of left-to-right chrome holding reversed text.

Voice search in a non-Latin script

Patrons can speak a search instead of typing it, in English and in Urdu today. Typing a non-Latin script on a shared library terminal is genuinely awkward, and this removes the keyboard from the problem.

Mixed-script collections

One catalog holding records in several scripts at once, searchable in any of them, without splitting the collection into separate catalogs to keep the software happy.

If your language is not named on this page, that does not mean no. Content cataloging and search work in any Unicode script; what varies is interface translation and sorting, and both are answerable for your specific collection. Ask, and we will tell you exactly which parts are shipping today and which would be work.

FAQ

What multilingual libraries ask

Can Koha handle right-to-left languages?

Yes. Our catalog sets text direction from the interface language, so an Arabic or Urdu reader gets a right-to-left layout rather than left-to-right chrome with reversed text poured into it. Individual records in a right-to-left script display correctly regardless of which interface language the reader has chosen.

Can we catalog in two scripts in the same record?

Yes, and mixed-script records are normal in the collections we work with — a title in the original script with a romanised form alongside it, or an Arabic title with an English subtitle. MARC21 was designed for this. What matters is that both forms are stored as real data and both are searchable, rather than one being a note nobody can find.

Will our existing records survive migration without corruption?

That is exactly the risk, and it is why the migration includes a sample check in your own script before anything is committed. Legacy systems often store non-Latin text in an older encoding, and a migration that assumes UTF-8 turns years of cataloging into unreadable characters. We convert deliberately, then put a sample in front of someone who reads the language — because a script you cannot read is one where a validation script will happily report success on nonsense.

Can patrons search in their own script?

Yes. Matching works on exact and partial words in any script, so a reader typing in Arabic, Urdu or Chinese finds records cataloged in Arabic, Urdu or Chinese — they are not forced to guess at a romanisation. Language-aware stemming (matching a word to its other grammatical forms) is configured per catalog where a dictionary exists for the language; where one does not, matching is exact and partial rather than stemmed.

Can the staff interface be translated?

The interface ships in English, Urdu, Arabic, French and Chinese. That is a different job from cataloging content in a language, and confusing the two is the single most common misunderstanding in these conversations — see the section above. If you need an interface language not on that list, tell us: it is a translation project with a known shape, not a research question.

Does search sorting work correctly in our language?

Sorting is configured per catalog and verified against your own records during setup, in your own script, with you looking at the result. We deliberately do not claim that every script sorts perfectly out of the box, because collation rules differ by language and sometimes by country within a language. It is a question we answer for your specific collection rather than in general — and if there is a limitation, you will hear it before you sign rather than after go-live.

Get a quote

Tell us which languages

Name the scripts your collection uses and what has gone wrong before. We will tell you plainly which parts are already shipping and which would be work.

We reply by email. Your details are used to prepare a quote and nothing else.