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

如何支持第三方工具箱的本地化 #88

Open
johnnychen94 opened this issue Dec 9, 2019 · 7 comments
Open

如何支持第三方工具箱的本地化 #88

johnnychen94 opened this issue Dec 9, 2019 · 7 comments

Comments

@johnnychen94
Copy link
Member

JuliaImages最近在推进1.0版本,我在想能否借此机会把中文文档引入其中,如果可以的话,需要做一些什么工作来接入到JuliaZH?

JuliaImages/juliaimages.github.io#49

@Roger-luo
Copy link
Member

暂时没有。doc string本地化的工具暂时没有什么进展(没什么时间弄。。。)

@Gnimuc
Copy link
Member

Gnimuc commented Dec 12, 2019

如果可以的话,需要做一些什么工作来接入到JuliaZH?

我想不一定要接入到JuliaZH,可以起一个新repo,采用和JuliaImages一样的构建文档的流程来做。

中文文档额外需要做的变化是:

  • 确定本地化翻译平台,比如Transifex
  • markdown文档的翻译与同步
  • docstring文档的翻译与同步
    • 确定用于本地化的文件格式,比如PO file
    • docstring的提取和替换

@Roger-luo
Copy link
Member

Roger-luo commented Dec 12, 2019

我觉得前几点JuliaZH都已经探索过解决方案了。最后一点目前还没有实现,一个我觉得可能不太困难的方案是用Documenter编译出markdown,然后Transifex。


如果时间充裕,我可以后面在JuliaZH里试试看

@johnnychen94
Copy link
Member Author

我在想的是直接把中文docstring写到代码库中的某个单独的文件里,然后通过Requires.jl来根据JuliaZH.jl是否载入,来include从而追加/覆盖到原有的文档上。

@Roger-luo
Copy link
Member

Roger-luo commented Dec 12, 2019

我一直觉得Requires不是一个合适的方案。它直接把dependencies搞坏了,Pkg没法给你管理。但是大概效果是你说的这样,我们以前尝试过一些方案(现在JuliaZH里的关键词就大概是这样一个效果,但是关键词的替换很好做),但是主要问题还是没时间。别的事情优先级目前更高。

@Gnimuc
Copy link
Member

Gnimuc commented Dec 12, 2019

我在想的是直接把中文docstring写到代码库中的某个单独的文件里,然后通过Requires.jl来根据JuliaZH.jl是否载入,来include从而追加/覆盖到原有的文档上。

关于具体应该怎么实现,之前倒是讨论过一些细节:

gettext 是一套做本地化的工具或者说是一种模式/方案,按照它这个模式可以全面实现软件的本地化。gettext 通常需要语言本身的原生支持,但我们的需求其实是它的一个子集 -- 对docstring注释做本地化,所以只需要模拟出msgmergePO再到msgfmt这部分就够用了。

Original C Sources ───> Preparation ───> Marked C Sources ───╮
                                                             │
              ╭─────────<─── GNU gettext Library             │
╭─── make <───┤                                              │
│             ╰─────────<────────────────────┬───────────────╯
│                                            │
│   ╭─────<─── PACKAGE.pot <─── xgettext <───╯   ╭───<─── PO Compendium
│   │                                            │              ↑
│   │                                            ╰───╮          │
│   ╰───╮                                            ├───> PO editor ───╮
│       ├────> msgmerge ──────> LANG.po ────>────────╯                  │
│   ╭───╯                                                               │
│   │                                                                   │
│   ╰─────────────<───────────────╮                                     │
│                                 ├─── New LANG.po <────────────────────╯
│   ╭─── LANG.gmo <─── msgfmt <───╯
│   │
│   ╰───> install ───> /.../LANG/PACKAGE.mo ───╮
│                                              ├───> "Hello world!"
╰───────> install ───> /.../bin/PROGRAM ───────╯

目前,Julia 生态圈欠缺的工具有:

  1. dump和replace docstring的helper function
  2. PO file parser & loader

Localize.jl 通过 hack Julia 的 Doc 基本实现了前者,但可能需要更新到最近的Julia;
PO file 这部分如果不支持PO file所有的功能,应该也不难做。

UPDATE: demo 请参考 #105

@Roger-luo
Copy link
Member

我看了下Python的那个po的parser,看起来只有几百行的规模。

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

3 participants