BookStackApp / BookStack

A platform to create documentation/wiki content built with PHP & Laravel
https://www.bookstackapp.com/
MIT License
14.85k stars 1.86k forks source link

Feature request - Content localizable #569

Open AriasBros opened 6 years ago

AriasBros commented 6 years ago

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 commented 6 years ago

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 commented 5 years ago

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 commented 5 years ago

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 commented 5 years ago

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 commented 5 years ago

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 commented 5 years ago

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

ssddanbrown commented 5 years ago

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

pabst2k commented 5 years ago

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 commented 5 years ago

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

pabst2k commented 5 years ago

@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 commented 4 years ago

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

tcatlas commented 4 years ago

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

ferranrego commented 3 years ago

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 commented 3 years ago

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

gagarine commented 3 years ago

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 commented 3 years ago

You guys are incredible. Thank you.

dhigby commented 3 years ago

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 commented 3 years ago

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 commented 3 years ago

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 commented 3 years ago

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

soflane commented 2 years ago

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 ✌️

AliShaatani commented 2 years ago

thank you for this awesome piece of application, but, as you can see, you can't use it, as an official knowledge base section, without multi-language selection since the public visitor may want to change language, in certain places like technical documentation, where you need to use universal language, which is English in this case, and other languages in places like help and how to

a-mawlawi commented 2 years ago

Thanks to the maintainers for this great app, and I vote for the multilingual feature also. +1

ssoulaimana commented 2 years ago

+1 for multi language support in Bookstack. Thanks

jasell commented 2 years ago

+1 for multi-language support and easy/predefined integration to translation management system (like Crowdin or other).

robertfshort commented 2 years ago

+1 for this feature

ffranchina commented 2 years ago

Hello everyone! I was about to open a feature request for a kind of relatable feature but I thought that maybe would be better to ask here first and, in case, discuss it.

Proposal From the perspective of the semantic web it would be quite nice to be able to specify the language of a single book though the attribute lang (https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/lang): it can improve the indexing and the accessibility of the resources and it can be useful also for retrieving the resources in an automatable way. Such change should be quite easy to implement since it is just an additional attribute to store for every book and could be shown only at html-level (for elements that are data-entity-type="book", for instance).

Such feature could also be implemented in a less invasive way though the usage of the already implemented tags but it would require anyway some custom logic in order to place the respective lang attribute in the html.

Extensions Having such feature implemented could also open to some interesting scenarios:

Conclusions I think this would be a valuable addition by itself, but can also be seen as starting point for interesting scenarios. I think I will end up implementing such feature by myself but, if welcomed by @ssddanbrown, I would be very happy of implementing it according to his view of the project!

Thanks!

ssddanbrown commented 2 years ago

Hi @ffranchina, Thanks for putting forward the idea. From my perspective I'd rather crawl towards a fuller solution than sooner implement a half-solution that does not have direct and/or clear usage/benefit within the system itself. I can see how your proposed idea may help in some scenarios but I try not to implement features based upon possibilities or opening interesting scenarios, Instead I try to focus on fundamental desires that fit the usage of BookStack and the vocal desire is proper multi language page support.

If your proposal would help you at the current time, I believe this could be done with tags (as you mention) along with the visual theme system to apply the lang tags where required. If you'd like some further guidance on that feel free to open a new issue.


Just to state my updated view on this, since it's been almost a year, I'm still aligned with my previous view but there's a potential chance I may soon transition to work on the project full time and hence it may be more feasible to include. Either way things go, page-translations will be in mind when making other fundamental changes to slowly get us moving towards the feature, or at least not fully block us off.

jasell commented 2 years ago

What are your plans for managing the translations? Do you plan to integrate with existing TMS systems, like Crowdin? Or are you planning to build your own translation support? I spoke to Crowdin and they are happy to support as they wish to see more platforms integrating their support (as they gain business from that).

ssddanbrown commented 2 years ago

What are your plans for managing the translations? Do you plan to integrate with existing TMS systems, like Crowdin?

I have no specific plans for that. The primary goal would be multiple languages per page in the current editor experiences. Automation outside of that would probably be delegated to API use via external apps/middleware. Doesn't make sense for us to support specific translation services/platforms.

jasell commented 2 years ago

I would agree that every page would need its separate "copy" in other languages. I would not publish the translated version nested with the original language. I would make parallel books, or bookshelves in your case (i'm not sure what make most sense). As a user would not jump between language versions when consuming the book. They typically have a preset for what language they wish to use.

So when storing each book I would use a folder for each language high up in the hierarchy. In your TMS you decide for a which languages to offer. This system will monitor the original language and make a copy under a new language folder. If there are additions or changes to original the TMS will see that and copy those to the translated folders.

The TMS would track what is translated and also approved so you can present a status or offer a threshold how much need to be translated before you publish. i.e. it could be ok if 99% is translated for the remaining 1% it would show the untranslated original text.

This way I think the effort on your side could be kept at minimum. On the publishing side you need to provide a GUI for selecting language version, you would also need to offer some official language tags so systems can chose automatically based on the users "locale". You would need to figure out the integration to the TMS, how the TMS can read and scan your sql storage. And how the TMS can add a new language and write and update the translated language version.

I assume that the images would be the same for all languages versions, so only one assets library to serve all language versions.

With TMS I think Crowdin could be a good start, you already use them for localization of the Bookstack application and they seem to be willing to help out in doing this. I have no relation to Crowdin by the way, I'm just trying to build my toolchain for translating my GUI and Guides. If Bookstack and Crowdin where integrated this would have solved my needs.

jasell commented 2 years ago

We are still very much interested in a solution like Bookstack but we require content translation support.

Can we some how help to make this happen?

What would be your preferred option to get this moving?

Can Bookstack use GitHub for storage? If so many translation system already have integrations to GitHub.

Short outline what needs needs to be done...

(I'm not a developer so I might got some things wrong here...)

ssddanbrown commented 2 years ago

Hi @jasell, Thanks for offering support. Just to quote and re-iterate the statement from my previous comment:

The primary goal would be multiple languages per page in the current editor experiences. Automation outside of that would probably be delegated to API use via external apps/middleware. Doesn't make sense for us to support specific translation services/platforms.

So I would consider any TMS/external-system-support outside of the scope of this issue. Maybe that could be requested afterwards, once we have the multi-language infrastructure in place, but It's likely I'd still consider that specific solution out of scope of the core project at that time since platform-specific support does not make sense in terms of maintenance and efforts, it's better for us as a platform to focus on providing the API for abstract usage.

Can we contribute or cover some of the cost for the integration. We could also assign development resources to help out. What would be your preferred option to get this moving?

To be honest, neither. Someone else developing a feature so wide will likely just guilt me to force focus of my efforts. As I've touched upon in previous comments, It's not so much the implementation but also the long term impact of such a feature, relative to the demand. Potentially some commitment of ongoing financial support could help, but I'm not sure how to officially formulate that, I may have to explore similar circumstances in other open source projects.

Since my last comment, I am now aiming to work on the project full time, and that's my current plan, which makes such a feature more viable to proceed with. It's now just a case of why this feature should take priority over any other work, especially for it's impact.

jasell commented 2 years ago

@ssddanbrown, Thanks for elaborating on your reason.

So if we decided to make such integration, we still depend on some support on the architecture. As how translated pages are stored. Page by page, book by book or shelf by shelf.

Most likely all language versions will refer to the same resources, etc.

Would you be willing to look into this?

I asked before, would GitHub be a candidate for storing the content during editing? That would simplify integration with TMS system as these often has an integration to GitHub.

ssddanbrown commented 2 years ago

@jasell

Would you be willing to look into this?

Yes, that's the entire idea of this issue and my comments in regard to working on this are in the last paragraphs of my previous comment.

I asked before, would GitHub be a candidate for storing the content during editing?

No, As I stated above multiple times I would not look to support specific external platforms in the scope of this issue/feature. You would be free to use GitHub in your own translation pipeline/process (Via connecting with BookStack APIs or extension systems) but our focus would be the core system and the provision of a generic API for any external usage.

BashTec commented 2 years ago

Hi together, first of all many thanks for this great project! For scientific and research institutes in Germany, the lack of multilingualism is unfortunately an obstacle for widespread use.

We would love to see this feature and I think it could significantly drive the adoption of BookStack.

keyhelp commented 2 years ago

Hello! just came here to thank you for this great software! I would also highly appreciate the feature discussed here ;).

Right now I'm using different shelves to manage different languages. That's fine, as long as the user

Nice to hear, you may have time in the future to implement such a feature! Keep up the fantastic work ;).

angevi commented 1 year ago

Is there an update on this issue? There is strong interest from three different sister-social enterprises here. The need arises from countries with more than one language. Creating knowledge bases in several languages is an issue of social inclusion.

jasell commented 1 year ago

We are still open for this and can contribute with either money or time. I would suggest an integration to Crowdin, as that tool is already tied to BookStack for translating the UI.

rmibelgium commented 1 year ago

Same interest on the side of our organization. We're continuing to analyse how we could do that with Logical Theme and without forking the code.

Silverlan commented 1 year ago

I would also like to express my interest for this. Artificial Intelligence has become exceptionally good at translating lately and all that's stopping me from using that to offer my wiki in a bunch of different languages is the lack of this feature.

2-click commented 1 year ago

Honestly that feature would be so great

jasell commented 1 year ago

@ssddanbrown would you have time to share an update on this topic? Seems like we are a several who are interested in this and we can probably contribute if you can put forward what could help you prioritize this request, whether it is funding or development resources?

ssddanbrown commented 1 year ago

would you have time to share an update on this topic? Seems like we are a several who are interested in this and we can probably contribute if you can put forward what could help you prioritize this request, whether it is funding or development resources?

The primary blocker for me, as alluded to in my previous comments, is the lack of motivation for what would be taking on a significant amount of technical, maintenance & support dept in the system complexity this would add.

While funding would help that motivation, it would really need to be long-term funding since the costs are long-term. While I've had several offers from businesses in funding this feature now, I've never had a single actual figure put forward, since most seem to act like this is a one-off business transaction that they want a deal on.

While I'm very grateful @jasell that you have offered funding and resources, I've been hesitant to inquire further since within this thread you have seemed to misunderstand the direction and scope I'd want to take for this feature. I have responded above three times that external systems would be out of scope for this core request, and you have still requested that since.

This (The core feature, not external platform support) is still something I want to implement, I just need to find the right moment and motivation. Might not be too far as I look what add next in the roadmap. The initial move will probably be me starting threads, and linking them here, to ask questions on usage and/or put out initial implementation proposals for feedback.

jasell commented 1 year ago

Thanks for sharing your update @ssddanbrown . We are willing to discuss either a one time fee or subscription for this, whatever could motivate you do this.

My need is a support for authoring, translating and rendering of my guides. I see bookstack currently supporting two of these three needs.

My suggestions on external system was an attempt to reduce the work on you, but that is not a requirement as long we can get the toolchain/pipeline for the three needs mentioned above. To me it seems that building a complete TMS is harder than making a stable integration to an existing TMS. As you already have a TMS integration for your own UI I naturally looked at that as a first option. But if you wish to provide a TMS as part of bookstack I see no problem to use it, but it appears as more work and responsibility for you.

If you are not considering this during foreseeable future, would you consider to draft some guidelines on how an integration to a TMS would work? As you know some about TMS (as you translate your own UI) and you are the one with the best knowledge of Bookstack and its API. I could think of to setups, you tell which the better option:

One benefit of using an external TMS is that we can use it for our own UI as well (we currently use Crowdin as you do), then the translation memory can be shared across the Guides and UI, as I assume your TMS would only support your guides.

ssddanbrown commented 1 year ago

Hello everyone :wave:

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.

angevi commented 1 year ago

For a simple book with max two permission levels and max. two languages, it is no problem to have two books. It becomes complicated to manage several books when: 1.) The permissions are more complicated, 2.) The end users switch between languages to better understand, 3.) There are more than two languages. It becomes higher specialized and knowledge bases in organizations need to be easy to use/easy to access/ easy to manage. Especially when employees are diverse in age, background, language.

jasell commented 1 year ago

Thanks for looking into this! I haven’t looked into all you can do with API:s, so I might go out bounds here, sorry about that.

We are documenting our software, Guide is the primary assets, but there is release notes and additional way of working content and other value adding information.

I could guess for every language the system generates a new bookshelf with books in the new language. Our translators will then translate and publish when done.

Our users can select a language through their personal settings and will have read-only guest access.

Authors and translators will have a dedicated login. We don’t need to control which books or languages they can edit/translate, but it would be a bonus if we could.

We have a lot of illustration which we don’t intended to translate, so I would like all translated “copies” to use the same picture library. It should be nice, but no must, to replace some pictures in the translated versions, but that would be an exception.

What I understand since before, your plan is to build a “complete” translation management system, rather than provide a default integration to an existing TMS, like the one you have for the application. That is ambitious, we are happy with either solution.

Tagirijus commented 1 year ago

@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:

This comes to my mind offhand.

ASparwasser commented 1 year ago

I would really appreciate this feature!!!