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

多言語対応してみる #1

Open
MSakamaki opened this issue Apr 16, 2016 · 6 comments
Open

多言語対応してみる #1

MSakamaki opened this issue Apr 16, 2016 · 6 comments

Comments

@MSakamaki
Copy link
Member

これを利用

https://github.com/screeninteraction/jekyll-multiple-languages-plugin

@MSakamaki
Copy link
Member Author

@MSakamaki MSakamaki reopened this Apr 18, 2016
@MSakamaki
Copy link
Member Author

カスタムプラグイン化してみたがjekillのルールでカスタムプラグインだとgh-page化できない事がわかったので他の手を考える必要が有る。

@MSakamaki
Copy link
Member Author

jekill 3.x系対応だとコレを使う必要ありそう
http://untra.github.io/polyglot/

@MSakamaki MSakamaki mentioned this issue May 9, 2016
@dynamis
Copy link
Contributor

dynamis commented Mar 29, 2019

ghpages ではなく netlify でビルドするなら自由にプラグインその他のツールが使える。
その前提とした場合に編集が直感的に使いやすいそうなものを選定する。

候補:
https://github.com/planetjekyll/awesome-jekyll-plugins#multi-language--multi-lingual

Multi Language / Multi Lingual

確認した結果 (随時追記):

Language

  • md ファイルを複数作るタイプではなく {% t 'message' %} を各言語の翻訳に置き換える gettext タイプなので執筆者が辛い。無理。却下。
  • 言語毎の翻訳文字列を定義した data.lang.en 等は language_data ファイルとして定義
    language_data: data.lang.%%
    language_includes_dir: _i18n
    

Polyglot

  • path/filename-[言語].md ファイルを並列で作る

  • http://site_url/en/path/filename/ という URL でアクセス可能になる

    • サイト内のルート相対リンクの自動変換もある
    • 但しデフォルト言語では http://site_url/path/filename/ など言語コードパス無しになる
  • 一部言語のファイルがなくとも他の (デフォルトの?) 言語でページが作られる

  • 言語別の並列ビルドもサポートしている

  • 現在の言語を参照する変数は site.active_lang

  • permalink (slag) は frontmatter で言語毎に変更可能

  • MIT ライセンス

  • 参考: https://dev-yakuza.github.io/jekyll/multi-languages-plugin/

i18n Tags

  • PAGE-NAME.LANG.EXT が /LANG/PAGE-NAME に変換される
  • _i18n/LANG.yml に保存した変数置き換えタグが使える <h3>{%t Quote of the day %}. <small>{%t interesting %}!</small></h3><h3>Le citation du jour. <small>intéressant!</small></h3> になる感じ
    fr:
      Quote of the day: "Le citation du jour"
      interesting: intéressant
    
  • 現在の言語を参照する変数は page.lang
  • permalink (slag) は frontmatter で言語毎に変更可能
  • 機能的には Polyglot と大差ないように見える
  • GPLv3

Localization

  • ファイル名が <NAME>.<LANG>.<EXT> の中で一部のテキストを置き換えるだけのシンプルなもの?ドキュメントが少し貧弱。
    Some <%= t 'translated', 'übersetzter' %> text. (ERb-style)
    Some {{ 'translated' | t: 'übersetzter' }} text. (Liquid-style)
    
  • AGPL ライセンス

その他

summary

やっぱ Polyglot ですかね。

@dynamis
Copy link
Contributor

dynamis commented Jul 24, 2019

手元で Polyglot 使って多言語対応サイトがビルドできることを確認した。検証して分かったことメモ

  • default lang では言語名をパスに含まない (それで構わない or デフォルト言語にしなければ良いだけの話ではあるが)
  • 他言語対応ページは必ずそのセットのページすべての frontmatter で lang (各言語), permalink (共通) を設定すること
    • デフォルト言語の lan は省略できそうだが permalink は必須だしセットで書くべき
  • 生成されるファイルのパスは元のファイル名関係なく permalink での指定次第 (まぁ jekyll 的に当たり前か)
    • panename.ja.md / pagename.en.md でも pagename-en.md / pagename-ja.md でもむしろ pagename.md / pagename-en.md や hoge.md / foo.md でも permalink 次第で結果は同じ
  • ちゃんと front matter 書いていれば jekyll serve 中にファイルの増減監視して更新するのも適切に行われる
  • include_relative とか jekyll-cloudinary などとも問題なく併用可能

note: オフィシャル GitHub Pages ではこちらの issue があるがやる気はなさそう
github/pages-gem#401

Polyglot については動作方法に課題があるという懸念の発言あり。まぁそうね。

The only possible problem with the Polyglot one, might be how it overrides the build https://github.com/untra/polyglot#how-it-works

@dynamis
Copy link
Contributor

dynamis commented Jul 24, 2019

tutorial の方で導入してみた: chirimen-oh/chirimen.org@26fe62d

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

No branches or pull requests

2 participants