Skip to content
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

[i18n] Multi-lingual Content Publishing (Mockups) #8509

Closed
hissingpanda opened this issue Jun 1, 2017 · 32 comments
Closed

[i18n] Multi-lingual Content Publishing (Mockups) #8509

hissingpanda opened this issue Jun 1, 2017 · 32 comments
Labels
help wanted [triage] Ideal issues for contributors to help with needs:info [triage] Blocked on missing information

Comments

@hissingpanda
Copy link

In the spirit of the exciting work being done on #8437 I thought I would take a stab at mocking up a design for publishing content in multiple languages. The purpose of this is merely to mockup a workflow for a user to create multi-lingual content.

Below are the preliminary designs, mess around with the XD link to see the design in action.

Adobe XD mockup: https://xd.adobe.com/view/bfec5bf4-85bf-4d3a-b78b-67c19cc963f8/

Concept

screen shot 2017-05-31 at 15 54 51

Here you can see the that nothing has changed on the current admin interface (Alpha.17) with the exception of an added "translations" box in the post settings.

screen shot 2017-05-31 at 15 55 04

Upon selecting that box, the user would be taken to a settings screen (just like the meta data box functionality) where they can see all of the languages they've added for this post, as well as add additional languages.

screen shot 2017-05-31 at 15 55 18

After selecting a language (in this example the user selects Spanish), they would be taken to a new/existing content post where you can create a custom permalink, metadata, tags, and add a translator. It might be better to have both the author and translator fields present across all translated posts.

The approach I've taken here is akin to Drupal 8's translation workflow which ties translated content nodes to the original node using the same node ID in the database.

In the Stories section, each post in a different language could appear as a separate content post with an additional language filter added at the top for sorting, or, alternatively, a translated post could be linked with the original post and listed together with a marker/link to indicate that the current post has been translated in another language(s).

Benefits to this approach

  • Easy to manage as a user
  • Intuitive
  • Streamlined with minimal clutter
  • No need to mess with tags
  • Allows custom permalinks
  • Allows custom metadata (could default to include <html lang="?">)
  • Ability to reference the same post in different languages when theming
  • Flexibility
    • some posts can be translated in multiple languages, while others can remain in only one language

I would love to hear feedback on this, and I hope to work on the implementation once a workflow has been decided on.

Features and Support

Taken from #3801. I've crossed out features that would immediately be solved with this workflow.

The following is a list of things we know we need to do / make possible / add support for:

Publishing

  • Level 1: blog language setting
  • Level 2: post language
  • customisable permalinks where english words are used
  • set <html lang="?">
  • add language output in JSON/LD
  • non-latin chars in slugs
  • non-latin chars in urls
  • non-latin chars when uploading files
  • non-latin chars handled by words and characters features of excerpt/content helpers
  • non-latin chars in generated heading id attributes
  • non-latin chars supported fully in editor
  • customisable permalinks for /tag/, /author/, and /page/ urls
  • locale dates in themes (moment.js language support)
  • different plural structures in the {{plurals}} helper
  • extensible rules for what constitutes paragraphs and words in the excerpt and content helpers
  • extensible rules for what constitutes paragraphs and words in the editor
@juan-g
Copy link
Contributor

juan-g commented Jun 1, 2017

The approach I've taken here is akin to Drupal 8's translation workflow which ties translated content nodes to the original node using the same node ID in the database.

That seems a good possibility, ID + language, to e.g. go directly from a page or post to the same one in another language.

I would love to hear feedback on this, and I hope to work on the implementation once a workflow has been decided on.

It looks good. The team probably is super-busy right now preparing the launch of Ghost 1.0 Beta, but I think they will like to have community cooperation for internationalization tasks.

@PaszaVonPomiot
Copy link

Functionally is okay from my point of view. Like in Polylang there should be some kind of indication that the same post exists in another language.

@danilopolani
Copy link

Is there a branch for this to contribute?

@juan-g
Copy link
Contributor

juan-g commented Aug 27, 2017

@danilopolani, not yet. However, since multi-language is a high-demand functionality, I think probably after the next i18n stage is launched, surely soon (translatable Ghost's frontend and themes, #8437). These i18n stages are on the Ghost team's wish list, and they will decide suitable times.

@danilopolani
Copy link

Oh, well ok. Is there nothing we can do to help with the multi-lang posts/pages feature?

@juan-g
Copy link
Contributor

juan-g commented Aug 27, 2017

That would mean installing Ghost locally for development, and preparing a pull request, all with Git.

However, I would wait for a little while until #8437 is released, and continue from there. Or talk directly to the team, for example on Ghost's #i18n or #contributing Slack channels.

@kirrg001 kirrg001 added the needs:info [triage] Blocked on missing information label Dec 6, 2017
@kirrg001 kirrg001 added the help wanted [triage] Ideal issues for contributors to help with label Jan 22, 2018
@kirrg001
Copy link
Contributor

Note: If you are interested in leading this project, then please contact us first in slack.

Each project has to go through certain steps (research, review, ui, approval, development). No pull requests accepted before getting an approval.

And keep in mind, that the Ghost developers are quite busy, so you would have to be patient for feedback loops 🙈 😎

@edpichler
Copy link

Hello people, is this going on? I really need it.

@mindsers
Copy link

@edpichler Hi, I am not a maintainer of this project but I'm glad to see that this issue interests you and that you "really need it", may be it'll be done soon !

The open source community needs motivated developers — just like you — to contribute. 😉

@kevinansfield
Copy link
Member

@edpichler, @mindsers there is no on-going project by the core team to implement this. I would suggest opening a topic on our Ideas board and voting 😄

For the community to help it really needs a champion for this project that can see it through from start-to-finish. The Slack team mentioned above no longer exists but has been replaced by our forum which is the best place to reach out.

@mprinc
Copy link

mprinc commented Jun 2, 2018

Question from the core developers. Can you provide at least some architectural hints what, how and how complex multi-lingual content extension would be? And also some directions for someone who wants to get involved.

@mprinc
Copy link

mprinc commented Jun 2, 2018

In the meantime, what is the best workaround? Any links, best practice, ...?

@juan-g
Copy link
Contributor

juan-g commented Jun 2, 2018

In the meantime, what is the best workaround? Any links, best practice, ...?

@mprinc Not a core developer but, about this point, there is—for the time being—the workaround of installing several Ghost sites, one for each language (e.g. example.com/es, example.com/fr, etc.). See Set Up Multilingual Ghost.org Blog.

On the other hand, of course this issue's goal is different, multi-language with just one Ghost site, still to be developed.

@pawelngei
Copy link

pawelngei commented Jun 3, 2018

This is a feature I'd really like to see in Ghost, as right now my https://alxd.org/ is build with a Pelican StaticGen and the lack of support for multiple languages is stopping me from migrating.

I should have free time in a ~month and would love to contribute or even lead the implementation proposition initiative. My FLOSS account may not show it, but I've been working on similar projects for the last four years :)

@juan-g
Copy link
Contributor

juan-g commented Jun 3, 2018

Ghost is now evolving in ways that are going to make easier the development of this multilingual functionality, as explained by Kevin of the Ghost team in a recent reply to one of the developers considering to help with this issue.

@andrewanswer
Copy link

andrewanswer commented Aug 2, 2018

@kevinansfield @mprinc I have an interesting idea - what if Ghost platform will translate the site content on the fly using AWS.Translate/Yandex.Translate API? We can use power of machine learning this way.

We can talk about this. Please contact me through my site http://answe.ru - you can find my Skype in header.

@JackNSnake
Copy link

Hi Sir. , Im Jack French Canadian, Quebec near Montreal, justvtold me exactly how to make it ans can translate english tout french, have a nice day

@sakulstra
Copy link
Contributor

hello, was just looking at this and found: https://forum.ghost.org/t/multi-lingual-content-publishing/1413 which seems to be closed, but the feature isn't implemented yet, is it? As i get the linked ghost 2.0 release post we can now localize the theme, but the content itself is still mono lingual or did i get this wrong?

@juan-g
Copy link
Contributor

juan-g commented Dec 5, 2018

@sakulstra Currently, there are a couple of ways to have multilingual sites, both with limitations:

  1. The old workaround of installing several Ghost sites, one for each language (e.g. example.com/es, example.com/fr, etc.). See Set Up Multilingual Ghost.org Blog (this link has a recently expired https certificate right now).
  2. The new workaround using dynamic routing: Creating multi-language sites with Ghost – Tutorials, which has its problems, such as no date translation, and for example: Multilanguage blog with a multilanguage theme - Help - Ghost Forum.
  3. A third solution would be one like those proposed on this issue, a dedicated solution for multi-language, which is not yet developed but I think could be great.

For now, until there is something better, I personally still prefer the first one, which is compatible with easily translatable and easily updatable themes, automatically translatable dates, etc.

@ErisDS
Copy link
Member

ErisDS commented Jan 2, 2019

Closing this as there are now ways to achieve multilingual content. We're interested in any new proposals for making this easier at the API level, or improvements to dynamic routing.

Note that we intend to add Nested Tags and custom taxonomies to dynamic routing, and those will provide more avenues for structured content like multilingual content.

@ErisDS ErisDS closed this as completed Jan 2, 2019
@YoranBrondsema
Copy link

We're trying to set up a multi-language blog using Ghost as a headless CMS. We use Gatsby as our site generator, and pull the posts from Ghost with GraphQL at build time.

Unfortunately, none of the workarounds are really great, or at least they make the CMS part really unnatural. Ideally, there would be a way to indicate "these three posts are really just the same post but in different languages". The language could be saved as a tag on the post or something. I realize this impacts the data model quite a bit so I understand this is not an easy feature to develop.

We're now looking into other options like Contentful or Craft CMS but an open-source solution like Ghost would have our preference.

Note that I don't want to criticize Ghost or anything. You guys are doing great work and the fact that it's all open-source is great. I just thought it would be useful to document our use case to further advance the discussions.

@joallard
Copy link

joallard commented Feb 6, 2020

Hey @ErisDS, I understand what you're saying here:

Closing this as there are now ways to achieve multilingual content. [...]

But I'm not finding what you're referring to. Are you able to clarify?

The only thing I can see from read-skimming this long thread is @juan-g's comment. The solutions he stated aren't things I'm willing to do in good conscience as I want to avoid the potential nightmares ahead.

I understand the circumstances, but I'm also kind of sad that I read "Multi-language" on the features page before installing, and now with some fresh install enthusiasm and some searching I land on this closed issue.

Edit: Just came across doc Translation & Multi-language content; it's still pretty hacky though.

@madhums
Copy link

madhums commented Mar 9, 2020

Are there any examples of any themes that do multi language support? Any links other than https://ghost.org/tutorials/multi-language-content/ is appreciated!

@JackNSnake

This comment was marked as spam.

@pengu10
Copy link

pengu10 commented Jun 11, 2020

Is multilanguage in the roadmap? Can we get a official response?

@ErisDS
Copy link
Member

ErisDS commented Jun 11, 2020

This is the official response:

https://ghost.org/tutorials/multi-language-content/

@pengu10
Copy link

pengu10 commented Jun 11, 2020

This is the official response:

https://ghost.org/tutorials/multi-language-content/

ok, so its semi supported with code hack at the moment and there are no plans to integrate this officially in the future. Got it.

@ErisDS
Copy link
Member

ErisDS commented Jun 11, 2020

It's not a hack, but thanks for making me regret taking the time to reply to you. I recommend having a read of this: https://ghost.org/faq/open-source-etiquette/

@alevals
Copy link

alevals commented Feb 10, 2022

This is the official response:

https://ghost.org/tutorials/multi-language-content/

It's not a hack, but thanks for making me regret taking the time to reply to you. I recommend having a read of this: https://ghost.org/faq/open-source-etiquette/

That article is misleading.
There are many essential multilanguage features that are not supported by Ghost and that are not even mentionend in that article.
Just a few:

  • translating theme labels in a decent way (via j.son file, or po file) for multiple languages
  • different navigation for each language
  • language attribute for tags and authors
  • transactional emails translatios
    .....

@headkit
Copy link

headkit commented Jan 13, 2023

@a0m0rajab
Copy link

@baloo1687
Copy link

okay, but how I can translate the strings?

For example:
I have index and index-de. And I need to translate text in header as well. How I can do it?

en version:

  • {{t 'Book a Demo' }}
  • de version:

  • {{t 'Buchen Sie eine Demo' }}
  • Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
    Labels
    help wanted [triage] Ideal issues for contributors to help with needs:info [triage] Blocked on missing information
    Projects
    None yet
    Development

    No branches or pull requests