【中文文档】Transifex已死,ChatGPT永生

Proposal: 弃用transifex,启用ChatGPT

弃用理由:

  1. transifex操纵起来并没有那么直观
  2. 颗粒化的翻译和上下文关联相冲突
  3. 目前的效果不佳,很多文档仍然缺乏

启用ChatGPT的效果:

  1. 翻译质量高
  2. 能够整章节翻译,上下文关联性强
  3. 直接复制粘贴markdown的raw文本即可,基本无需担心格式的问题
  4. 能用prompt设置些要求

直接看演示吧:

首先设置一下格式要求

然后直接把文档raw文本复制黏贴发送

然后我们就拿到对应的翻译了,这里我直接把翻译后的结果一键复制黏贴到下面大家看看:

[包扩展](@id man-extensions)

包“扩展”是指在当前的 Julia 会话中加载指定一组其他包(其“扩展依赖项”)时自动加载的模块。扩展在项目文件的 [extensions] 部分下定义。扩展的扩展依赖项是项目文件的 [weakdeps] 部分中列出的那些包的子集。这些包可以像其他包一样具有兼容条目。

name = "MyPackage"

[compat]
ExtDep = "1.0"
OtherExtDep = "1.0"

[weakdeps]
ExtDep = "c9a23..." # uuid
OtherExtDep = "862e..." # uuid

[extensions]
BarExt = ["ExtDep", "OtherExtDep"]
FooExt = "ExtDep"
...

extensions 下的键是扩展的名称。当加载了该扩展的右侧(扩展依赖项)的所有包时,它们将被加载。如果一个扩展只有一个扩展依赖项,那么为了简洁起见,扩展依赖项列表可以写成一个字符串。扩展的入口点位置要么在 ext/FooExt.jl 中,要么在 ext/FooExt/FooExt.jl 中,对于扩展 FooExt。扩展的内容通常结构化为:

module FooExt

# 加载主包和扩展依赖项
using MyPackage, ExtDep

# 用扩展依赖项中的类型扩展主包的功能
MyPackage.func(x::ExtDep.SomeStruct) = ...

end

当向环境添加具有扩展的包时,weakdepsextensions 部分将存储在该包的清单文件中,该部分位于该包的部分中。一个包的依赖关系查找规则与其“父级”相同,只是列出的扩展依赖项也被视为依赖项。

[包/环境首选项](@id preferences)

首选项是元数据字典,它影响环境内的包行为。首选项系统支持在编译时读取首选项,这意味着在加载代码时,我们必须确保 Julia 选择的预编译文件与当前环境使用的相同的首选项构建。修改首选项的公共 API 包含在 Preferences.jl 包中。首选项被存储为 TOML 字典,位于当前活动项目旁边的 (Julia)LocalPreferences.toml 文件中。如果一个首选项被“导出”,它将被存储在 (Julia)Project.toml 中。这样做的目的是允许共享项目包含共享首选项,同时允许用户自己在 LocalPreferences.toml 文件中覆盖这些首选项,并且应该像其名称所示那样被 .gitignore。

在编译期间访问的首选项会自动标记为编译时首选项,对这些首选项进行任何更改都会导致 Julia 编译器重新编译任何缓存的预编译文件(.ji 和相应的 .so.dll.dylib 文件)对于该模块。这是通过在编译期间序列化所有编译时首选项的哈希值,然后在搜索要加载的正确文件时将该哈希值与当前环境进行比较来完成的。

首选项可以设置为仓库范围的默认值;如果包 Foo 在全局环境中安装,并且设置了首选项,则只要您的全局环境是您的 LOAD_PATH 的一部分,这些首选项将适用。在环境堆栈中更高的环境中的首选项将被更接近的条目在加载路径中覆盖,最终以当前活动的项目结束。这允许存在仓库范围的首选项默认值,而活动项目能够合并甚至完全覆盖这些继承的首选项。有关如何设置首选项以允许或禁止合并的完整详细信息,请参见 Preferences.set_preferences!() 的文档字符串。

1 个赞

ChatGPT 翻译质量不错,但也能看出来需要人工二次润色的。

Julia 文档很大,不可能一个人完成,所以就需要在Transifex这样的平台上进行协作。所以,我觉得要保留Transifex平台。

不过,一些相对内容较小的包,比如 BinaryBuilder.jl ,都是由一个人完成的。这样的话选择方案就比较灵活,直接GitHub commit 也是可考虑的。

transifex 的主要问题是需要人工维护同步。
确实可以直接弃用了。
改到直接在 github repo 里同步翻译。

1 个赞

当然不可能一个人完成,Github上面也能协作。Transifex的问题在于和使用chatgpt冲突。