Skip to content

Feature request - Content localizable #569

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
AriasBros opened this issue Oct 24, 2017 · 71 comments
Open

Feature request - Content localizable #569

AriasBros opened this issue Oct 24, 2017 · 71 comments

Comments

@AriasBros
Copy link

Desired Feature

In my organization we need to have our content in several languages.
Do you have in your roadmap implement localizable content?

Current Behavior

In this moment we can create books/chapters/pages in the languages we need, but translations have no connection to each other and all content in all languages appears to the user.

Expected Behavior

Would be fantastic if only the content in the current language of the user is shown, with links to the available translations and fallback to the default language if missing translation.

If you have not planned this functionality yet, I would like to collaborate with you by implementing it.

@ssddanbrown
Copy link
Member

Hi @AriasBros,
Thank you for your suggestion. This is currently not on the roadmap as it has not been requested before.

To be totally honest this is quite a chunky feature that will require maintenance so I'd be apprehensive about including this without a very high demand.

@AlexWerz
Copy link

I plan to use BookStack to add books in multiple languages. The user can then decide which language of the book (in my case manuals) he wants to read. This makes updates easier as they often just need to be translated from the english master.
As this is not a feature (yet?) I plan on using tags to set the language and book shelfs to organize languages. Are there any other approaches currently used for maintaining different languages of the same book?

@Drakone
Copy link

Drakone commented Dec 6, 2018

COmmunecter aimerait également pouvoir proposer sa documentation en plusieurs langues : doc.co.tools.
La solution proposée par @AlexWerz est intéressante. On va essayer.

@Orchal
Copy link

Orchal commented Dec 10, 2018

Hi,

I'm also very interested by this feature as I work in a public research organization which is international.
Sure we can use tags and double all the pages but it would be very nice to have a language switch somewhere and only have one language displayed at the same time.

By the way thank you for all your work, this is pretty good!

@lreiher
Copy link

lreiher commented Jan 2, 2019

I also want to express my need for a multi-language wiki. Of course most of us understand English nowadays, but it would definitely help a lot if certain pages could simply be read in your preferred language with English as the fallback.

Thanks for all your work so far!

@TobiasDax
Copy link

Any updates on this? Is there a roadmap for this feature?

@ssddanbrown
Copy link
Member

@TobiasDax I'm afraid not, no updates and this is currently not on the roadmap.

@p2kkx
Copy link

p2kkx commented Aug 22, 2019

First of all: Thanks for this amazing software! I really love it!

I also have a need for a translation feature. I write manuals with BookStack and would make my life so much easier.
You said it will be hard to implement. Maybe starting with a "lite" approach would make it easier.
What I mean is e.g.:

  1. Click on edit page
    1.1 Click on create translation
  2. Page is copied to \language\pageName
  3. Translation can be done by just replacing the old text line by line more or less
  4. Save

I know it will be hard to deal with updates, this would require more complex code. But with this solution at least the pages are directly connected to each other and I can switch between them. And other editor will instantly see that there is another translation that needs to be updated. In the bookshelf he will forget about that.

@Drakone
Copy link

Drakone commented Aug 22, 2019

Here is the method I used while waiting for the new feature: : https://doc.co.tools/shelves

@p2kkx
Copy link

p2kkx commented Aug 22, 2019

@Drakone so you basically have two shelves for different languages or did I miss something? As I wrote having multiple shelves / books is not really what I want because it makes it hard to connect the single pages directly with each other.

@tgraveleau
Copy link

Hey,
We have customers from different country and we would appreciate this feature too.
Hope it will be available.

@tcatlas
Copy link

tcatlas commented Dec 7, 2019

Our organization has a need for this. Throwing in my hat for support.

@ferranrego
Copy link

Hello! I think this could be an amazing feature to have, as Bookstack could work also as a Help Center. I would love to see it for my project, any update on this? Did you reconsider adding this feature on the roadmap?

Thanks!

@Ombrelin
Copy link

Ombrelin commented Nov 2, 2020

Hello, I love Bookstack and I second what was said : translatable books would be a great new feature

@gagarine
Copy link

gagarine commented Dec 25, 2020

We are publishing free school book. We are using automatic translation to make them accessible to a wider audience. We are looking to a new platform but content translation at the page level is a must. One viable option at the moment seem Drupal but it will require lot of customisation.

@digitall-it
Copy link

You guys are incredible. Thank you.

@dhigby
Copy link

dhigby commented Mar 1, 2021

We live in a multilingual world. I love the BookStack app and experimented with the demo site. It is a great solution, one of the best I've seen, but I can't go with it because my Book/manual needs to be kept up to date in between 2-7 different languages.

@ssddanbrown
Copy link
Member

Just to re-confirm my position on this, since it's been a while:

I appreciate this would help out a bunch of different use-cases, but it would be a fairly bulky feature to implement while being hard & time consuming to work this into the platform in a manner that does not hinder the user-experience of existing non-multi-linugal use-cases. Additionally, the kind of changes this would entail would have an ongoing dragging cost on future further development.

I was recently approached by a charity that wanted to use BookStack, with this feature being a requirement; and while I really wanted to support them by looking to implement this feature, I could not warrant the cost it would have, at least at this point in the project's life.

@SubJunk
Copy link

SubJunk commented Mar 11, 2021

I would be very interested in this as well. If I contributed a Pull Request to make a version of the feature, would you be interested, or still no?

@ssddanbrown
Copy link
Member

@SubJunk thanks for offering but likely not due to my concerns above.

@soflane
Copy link

soflane commented Dec 20, 2021

First, thanks so much for this amazing soft! I'm starting using it as much for my work and personal life. I came from wiki.js and bookstack is way better for my usage, and for an internal doc use In a business. But indeed I had translation in wikijs and it's kinda a pain in the ass where I have different books with plenty of pages to manage. I would looove to have this feature implemented, as I already love this app and I will use it everyday more!
Big up for this soft!
Peace, love & unity ✌️

@Tagirijus
Copy link

Tagirijus commented May 3, 2023

@ssddanbrown : how do existing options like that fall short?

I hope I understand it correct that you ask, what would fall short, when basically doing some kind of "workaround" for the multi-language-content by e.g. copying a book. A user already mentioned some points, which I can second:

  • When using the search, "unwanted" languages might pop up in the results for the user as well.
  • Language-books would be listed under Books as well. So it would list languages the user might not understand and if they understand it, it would basically "double the content" in the end.
  • When having a book-copy for a new language, one would have to cross-reference the languages manually somehow so that the user could "switch" the language if needed.

This comes to my mind offhand.

@ASparwasser
Copy link

I would really appreciate this feature!!!

@jessicakuijer
Copy link

me too please!

@beeing
Copy link

beeing commented Jul 21, 2023

Hello everyone 👋

I've been doing a fair bit of thinking on this recently. I was going down the road of changing a lot of our data structure to support language variation, but as I went deeper the added complexities seemed to make less sense and be less worthwhile as they built up, and this led me to think I may be approaching this in the wrong way, thinking about technical implementation first over the fundamental requirements & needs here, and that there may be simpler alternatives to explore that would be better overall.

Therefore, to held explore options, I'd like to approach this at a different angle with the help of feedback from those that desire this feature. So here's my question to you:

Right now it's technically possible to service multiple languages through copied/duplicated content, like having separate books for different languages. Compared to what you need (and by that I really mean only what you need, not what you think might be good or what might be "interesting") how do existing options like that fall short?

Please think about your answer only in respect to user possibilities, goals and outcomes rather then thinking about a specific technical implementation you may desire.

As a pre-emptive reminder: external platforms & translation management systems, outside of our existing standard REST API, are out of scope for this conversation.

Hi, just my 2 cents:

The feature needs to address usability for both the authoring / editor and viewer. The technical implementation need not to be complex as most of the time, it is more towards UI.

For authoring side, usually we need to know the last updated date/time of the related pages (same page, diff language). This will help authors to see if some pages need to be updated for different languages. For a simple "diff" UI on the pages, we can just place 2 pages side by side on independent scrollable iframe / divs.

To ease the page configuration (permissions), the rest of the linked pages can be in-synced with the parent page, where all settings to be based on.

As for viewer side, they just need a language selector (can be in header / footer), which will show available languages for that page. Navigation to another page will remember the current language and if the destination does not have the language, it will fall-back to the primary page.

Hope that this is something doable and this project looks awesome!

Have a great day.

@Man-in-Black
Copy link
Contributor

Man-in-Black commented Sep 14, 2023

I also am very interested in this feature, but I also can understand the concerns about it.
But maybe there is a "simpler" solution to that.
Since automatic translations gotten better and better over the last years (imho), maybe it could be a compromise to use the builtin translation of nearly every browser nowadays.
So each user can translate the content to whatever language he needs.

The only thing which should be added for wider use would be a button somewhere in bookstack which translates the content to the desired language or at least opens up the menu from the browser.

I also know that this is not perfect, but its better than nothing.

@jasell
Copy link

jasell commented Sep 14, 2023

We tried using Chromes built in translation for both our software and the online guide but the result was far from acceptable, some laughter though. We seen better result when trying some AI-tools.

The challenge lays in the special terminology, invented words and abbreviations, we wish to translate from English to Japanese and Chinese...

@jeansanson
Copy link

I am also interested in this feature.

@hieste
Copy link

hieste commented Oct 25, 2023

Hello @ALL,
Here is a smooth opensource solution:
https://github.com/LibreTranslate/LibreTranslate

Perhabs it is a possipility to do a post-hook event and translate the content...

@jasell
Copy link

jasell commented Oct 25, 2023

Hello @ALL, Here is a smooth opensource solution: https://github.com/LibreTranslate/LibreTranslate

Have you made any attempts to integrate this with Bookstack?

@hieste
Copy link

hieste commented Dec 7, 2023

Yes. We install an local instance of libretranslate on a powerfull host. We wrote a programm to get all pages from bookstack step by step via rest api and check if there was an update. If yes, we remove all html tags and put it to libretranslate via rest api (we translate to 3 languages: German, French, Englisch). The response, we put in seperate tags in bookstack with the key of the language. So you can search in the language you want.
image

@LHBL2003
Copy link

LHBL2003 commented Dec 7, 2023

I also carefully read through the article from 2017. I also agree that Bookstack needs a multi-language function, as we and many others are working together more and more globally. A good variant would be like Microsoft, where either the content is available in x human-written languages. Or if it was only written in German, there should be an info in the English page that this page was automatically translated from the original language. When searching, the pages should first be displayed in the preferred language and then in other languages.

I even like the option of using the Google translator to start with. However, for reasons I can't yet explain, this is not possible. I have read here that it has already been used. The Chrome translation is neither suggested locally nor in the demo version of Chrome. Does anyone have any idea why this is the case or does it work for others?

Greetings from Germany, where the global English language is not omnipresent.

@szabeszg
Copy link

szabeszg commented Dec 7, 2023

I even like the option of using the Google translator to start with.

That reminded me of this: https://processwire.com/talk/topic/24567-fluency-integrated-deepl-powered-content-translation/

Which is a good example of how others are dealing with issues like this.

@cgsmith
Copy link

cgsmith commented Jan 3, 2024

I would like to offer a possible solution. It definitely requires a big change. Here is how I would go about the changes:

  • Configure middleware for localization
  • Make migration to change names to a json datatype. Store localizations as JSON for name fields or small fields like description
  • Add locale to the page entity.
  • Allow the middleware to route to the proper page entity depending on the locale that is configured.

Maybe set a setting for a fallback_locale under settings. That way if a route doesn't exist with the locale the fall back will be present.

I think technical debt is fairly limited with a proper test plan and unit testing. I also think automated translations and outside integrations are outside of the scope.

@quirkiest
Copy link

We are a multi-lingual company based in Japan and Australia. As I see it the challenge, from an admin perspective, is that maintaining content in separate places (e.g. books) means that the synchronisation becomes very manual and very likely to fall out of sync quickly. So while a translation solution does not IMO need to be super-complex, it does need to have some way to allow admins to manage the same content in different languages holistically.
One idea that occurred to me was that perhaps this could work well in-page tabs, which would be a feature not exclusively aimed at translation but which could take us a lot of the way there. If we can manage both our Japanese and English content in the same document (page) and have some way for users to flick to the version that they can read it would (at least for our company) be a really nice feature. And I figure tabs are a cool feature to have anyway...

P.S. in the meantime we are using collapsible blocks - not an awful workaround tbh.

@carlossierra311
Copy link

Hi @ssddanbrown. I'll try to provide some feedback for one of your questions:

Right now it's technically possible to service multiple languages through copied/duplicated content, like having separate books for different languages. Compared to what you need (and by that I really mean only what you need, not what you think might be good or what might be "interesting") how do existing options like that fall short?

The problem we have found with this approach is that when we copy the original book, all hyperlinks on the new book will point to the original book's pages (i.e. to the original language book instead of the translated language book), so besides translating all our text (which is expected), we also need to rework all the hyperlinks (which is unexpected). (By the way, is this the expected behavior, or are we misusing BookStack?)

Best regards!

@vmario89
Copy link

i was looking for the same feature of localization too. Changing the ui lang is cool, but it does not help for anything if the content itself is not in the language, the user excepts to see. the only scenario would be to have different shelves for differen languages, yes. but if we want to translate content 1:1, this is really not maintainable

btw. my motivation for thinking about all this: doing a documentation with bookstack for a large open source software project for an already existing community, which is spread accross europe.

i was thinking about doing some stuff like hosting

  • one bookstack instance on sth. like en.docs.yourdomain.org
  • another boostack instance on de.docs.yourdomain.org
    ... sharing the same database of users, groups, etc., but have some kind of master database which means we cannot create or modify new users or groups in all other databases
    ... with an environment which is fixed to the certain language, so ui language = content language
    ... synchronizing page ids and other table related stuff, but storing the different language content per page in the certain database

caveats would be:

  • many. i think this is highly complex :-(

@Lord-KalEl
Copy link

Hello to everybody and espacially @ssddanbrown

I know, that this could be a little complex, to do, but as you see, there are not less people, who want this feature.
I, personally, don't like PHP and I wanted to get rid of it. But I choose Bookstack, because the idea and the features are really great. There are 2 things I'm missing:

  • Permissions a little more detailed (for example: Author - can only save as drafts - , Editors - can save drafts and publish them -, Publishers - can only publish content).
  • The other is the multilanguage …

What can be the solution?
At first, we can make a variable, witch language it is. This will be stored in the url, after the domain. E.G. bookstacks.org/en or bookstacks.org/en_US … this depends on you.
As now, every Object (Shelves, Books, Chapters, Pages, Images and so on) has an ID - you need to store additionaly the Language_Code AND the Original_ID. (you will store always as foreignkeys the Oringinal_ID when you connect the shelves, the Books and so on together).
The Primary Key is the ID,
The Original ID and Language Code are Unique …

With that Chance, you won't have to rewrite everything … but you can use this, to add a feature, that that can easily expand …
For example:
If you don't want to change much things … you can show every book, ervery caption, every page and so on by making a select WHERE the ID is …
If you like to extant that, you can make some great charts, witch language is used more, bind up an KI to translate it automaticly and so on …

I don't think, that this will be easy … but I think, that this is very usefull in our nower days …

Thanks for reading. And maybe we will have a good announcement …

Have a good before Christmas time …
Kal

@BartoszStepien-3DArtist

Hi @ssddanbrown. First of all, thank you for the software. It is great. I join the request for multi-language support. +1

@ssddanbrown
Copy link
Member

Please don't add any +1 style comments, they add noise and notification, so I will delete them. Just add a 👍 reaction to the original post instead.


Just an update on this request, I have recently spent a while thinking through options again.
The more I think about it, the more it makes sense that this is managed via multiple instances instead of at the same instance, since that allows a lot of flexibility without adding a lot of the BookStack level complexity required.
Of course that may be more burdensome for smaller scenarios, but it's tricky to judge where on the scale the average scale of desire for this sits relative to that burden.
Regardless, a multi-instance setup would still require a fair bit of built in helper logic & UI to solve many of the challenges noted here in comments; Things like language switching control, cross-lang content sync/comparison/referencing etc...
Then there could be extra challenges of a multi-instance setup, upon the maintenance/management of multiple instances. Things like permission management and user management (which could be partially helped via SSO).

A tricky factor is that the best approach can change quite a bit depending on needs, user-approach/desire and scale, hence I tend towards a more flexible yet higher burden implementation.

I've kinda burnt myself out thinking about this for now, but will try to ruminate upon this potential approach/direction.

@BookStackApp BookStackApp deleted a comment from Superjamp Apr 17, 2025
@BookStackApp BookStackApp deleted a comment from Lord-KalEl Apr 17, 2025
@BookStackApp BookStackApp deleted a comment from BenjaminKobjolke Apr 17, 2025
@BookStackApp BookStackApp deleted a comment from e-p-s Apr 17, 2025
@BookStackApp BookStackApp deleted a comment from UnSciPreneur Apr 17, 2025
@jasell
Copy link

jasell commented Apr 17, 2025

Thanks for the update!
Can you share anything about the timing, to manage our expectations?
Does this mean it's on the roadmap and will happen within a year or is this a next millennium thing?

@ssddanbrown
Copy link
Member

@jasell Can't promise anything on timings. History would suggest that it won't be this year.
I usually cycle through ideas & requests, then rapidly proceed if I see a viable/suitable implementation path forward, hence no longer term roadmap. I checked in on this as a highly requested feature, to potentially implement for the 10 year anniversary of BookStack, but burnt out on it while planning, so will just have to cycle back in the future, probably after thinking though the path described above in the background. That might be later this year, or might not.

@Superjamp
Copy link

thanks, too :)

I understand that adding this feature after the fact might be really tricky. I haven't looked at the code in detail, but I think you know best how much time and headaches it will take to do so.

It is also definitely a challenging task for content creators to implement books in a [n] instance approach and for the organization to keep multiple instances with roles and permissions on par. Synchronization between instances could probably be achieved with a few scripts. An easy workaround for content creators today would be to structure their books using tags and/or using tags in their titles. (but messy)

From a user perspective, I'd like to have the content when it's available in my browser or preferred language. Then the content creator has to update both, and that's where it starts to fall apart if they forget to do so. Maybe there can be a feature implemented to allow the content creator to translate / update the localized page in a desired language with DeepL for example.
But now everyone knows that most browsers will try to translate the page for you... except for media content. And it is highly questionable whether localized content in this Project is really a necessary feature, given the current effort required to implement it.

In the context of a university using BookStack, it's a very necessary feature especially for international students.
And we (TU Braunschweig) are very interested in this feature request to get a good working implementation in BookStack.

Personally, I don't mind having only one supported language, it's perfectly fine for the scope of this project.

@jasell
Copy link

jasell commented Apr 18, 2025

But now everyone knows that most browsers will try to translate the page for you... except for media content

We tried this, but at least google's translation is far from good. We use bookstack as a guide for our software. Our software is highly specialized with a rather unique terminology, hence the need for the guide.

If google would offer a way to suggest corrections to its translation it might solve the problem and also improve the translation capability over time, but google doesn't want to allow this for some reason.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Development

No branches or pull requests