2018年4月(版本1.23)

更新 1.23.1: 此次更新解决了这些问题

下载:Windows: x64 | Mac: Intel | Linux 64位: deb rpm tarball | 32位: deb rpm tarball


欢迎来到2018年4月发布的Visual Studio Code。在这个里程碑中,VS Code团队一直专注于支持扩展作者的API工作,但在这个版本中仍然有许多更新,我们希望你会喜欢。一些关键的亮点包括:

如果您想在线阅读这些发布说明,请访问更新code.visualstudio.com上。
您还可以查看这个1.23版本的亮点视频,由云开发者倡导者Brian Clark提供。

发布说明按与VS Code重点领域相关的以下部分排列。以下是一些进一步的更新:

  • Editor - 更好的Unicode文件支持,更稳定的编辑器定位。
  • Workbench - 复制搜索结果,改进的Git克隆工作流程,VS Code进程资源管理器。
  • 调试 - Logpoint表达式支持智能补全和显示结构化对象。
  • 语言 - JavaScript/TypeScript 组织导入操作,持久的 Markdown 预览。
  • 扩展开发 - 新的webview和文件系统提供者API,'源'文件级别的操作。

内部人员:想要尽快看到新功能吗?您可以下载每晚的内部版本,并在更新可用时立即尝试最新更新。

编辑器

高亮显示的缩进指南

VS Code 现在可以在您在不同源代码块之间移动光标时突出显示活动缩进指南。

高亮显示的缩进指南

高亮颜色名称为 editorIndentGuide.activeBackground,您可以在 workbench.colorCustomizations 设置中进行修改:

"workbench.colorCustomizations": {
    "editorIndentGuide.activeBackground": "#ff0000"
}

保存时运行代码操作

新的editor.codeActionsOnSave设置允许您配置一组在文件保存时运行的代码操作。例如,对于JavaScript、TypeScript和其他提供组织导入代码操作的扩展,您可以通过设置来启用保存时组织导入:

"editor.codeActionsOnSave": {
     "source.organizeImports": true
}

您还可以使用语言特定设置来启用或禁用每种语言在保存时运行的代码操作。以下设置仅在保存TypeScript文件时启用组织导入:

"[typescript]": {
    "editor.codeActionsOnSave": {
        "source.organizeImports": true
    }
},
"[typescriptreact]": {
    "editor.codeActionsOnSave": {
        "source.organizeImports": true
    }
}

使用鼠标中键进行列选择

在 VS Code 中,可以通过按住 ShiftAlt 然后使用鼠标左键来添加列(框)选择。现在也可以使用鼠标中键来创建列选择:

编辑器列选择

注意:当将editor.multiCursorModifier设置为ctrlCmd时,修饰键在Windows上是ShiftCtrl,在macOS上是ShiftCmd

改进对UTF-16编码文件的处理

VS Code 一直支持文件的 UTF-16 编码,但需要 BOM(字节顺序标记)来正确检测此编码。如果 VS Code 没有找到 BOM,文件将无法打开,用户会看到一条信息提示。

在此版本中,我们为此消息添加了一个新操作,以在编辑器中以文本形式打开文件:

打开二进制文件消息

一旦打开,您可以更改编码以尝试解码文本。

此外,VS Code 现在使用了一种启发式方法,尝试自动检测没有 BOM 的 UTF-16。这种启发式方法应该适用于所有仅包含 ASCII 字符的 UTF-16 文件。

改进的编辑器定位

在某些情况下,当更改编辑器滚动高度时(例如调整包裹编辑器的大小、使用鼠标滚轮缩放或修改CodeLens),编辑器会尝试保持视口中的居中行。VS Code现在保持视口中的第一行,提供更稳定的外观。

编辑器稳定性提升

工作台

问题视图过滤

您现在可以使用过滤器在问题视图中包含或排除文件。

  • 在过滤器输入框中使用通配符模式来包含/排除文件。排除模式必须以!为前缀。例如,!*.js将移除所有扩展名为.js的文件。
  • 有一个使用文件排除设置过滤按钮,用于移除所有符合您files.exclude设置的文件。

下面的短视频展示了如何根据files.exclude设置过滤项目的out目录,并通过在过滤输入框中输入!**/node_modules/**来忽略所有node_modules

筛选问题

NPM 脚本运行

通过设置 npm.enableScriptExplorer,您可以启用一个资源管理器,显示您工作区中定义的脚本。

NPM脚本资源管理器

资源管理器支持:

  • package.json文件中选择脚本时,打开package.json文件或scripts部分中的脚本。这是选择脚本时的默认操作。
  • 将脚本作为任务运行,并在集成终端中显示输出。
  • 调试脚本。要启动节点调试器,脚本需要定义一个节点调试选项,如--inspect-brk另见)。

使用npm.exclude设置来排除特定文件夹中包含的package.json文件中的脚本。

Git克隆改进

Git 克隆工作流程有了一些改进。当运行 Git: Clone 命令时:

  • 使用原生对话框来选择仓库位置。
  • 使用了新的通知进度API,改进了操作状态报告。
  • VS Code 会提示您是否要将克隆的存储库添加到您的工作区或直接打开它。

Git 扩展还采用了新提出的 API 来处理 系统范围的 URI,并在特定 URI 上调用 Git 克隆。以下是一个克隆 https://github.com/microsoft/vscode-vsce.git 的示例 URI:

vscode://vscode.git/clone?url=https%3A%2F%2Fgithub.com%2FMicrosoft%2Fvscode-vsce.git

如果你想尝试这个:

  • Windows: 在命令提示符中,输入: explorer "vscode://vscode.git/clone?url=https%3A%2F%2Fgithub.com%2FMicrosoft%2Fvscode-vsce.git".
  • macOS: 在shell中,输入: open vscode://vscode.git/clone?url=https%3A%2F%2Fgithub.com%2FMicrosoft%2Fvscode-vsce.git.

从搜索上下文菜单复制结果

搜索结果树的上下文菜单包括三个新选项:复制复制路径复制全部。这是一个非常受欢迎👍的请求,它将使分享或导出搜索结果变得更加容易。

复制搜索

独立的搜索包含和排除输入框的回归

上个月,我们合并了搜索视图中的包含和排除输入框,以尝试简化和优化它,同时也节省了一些垂直空间。然而,我们从许多用户那里听说,这不符合你们使用搜索视图的方式。最终,我们决定简单地撤销这一更改,因此在这个版本中,我们又回到了1.22版本之前分开的包含/排除框。请注意,你不需要在排除框中的模式上使用!

包含排除

自定义活动栏视图

扩展作者现在可以将他们自己的视图容器添加到活动栏。根据您安装的扩展,更新后您可能会看到诸如自定义资源管理器之类的UI从文件资源管理器移动到新的自定义视图容器。例如,下面您可以看到来自Azure App ServiceAzure Databases扩展的资源管理器已移动到一个专门的Azure视图。

活动栏中的Azure视图

查看正在运行的 Visual Studio Code 进程

使用开发者:打开进程资源管理器命令或帮助 > 打开进程资源管理器菜单项来打开一个新窗口,该窗口包含关于正在运行的VS Code进程的持续更新信息。进程列表显示其CPU和内存使用情况、PID和友好名称,并且可以通过右键点击出现的上下文菜单来终止进程。

进程资源管理器

集成终端

终端分割的多根支持

您现在可以在多根工作区中选择文件夹以拆分终端。可以通过键绑定workbench.action.terminal.splitInActiveWorkspace命令重新启用旧行为。

语言

CSS 区域折叠

你现在可以使用/* #region *//* #endregion */在CSS/SCSS/Less中标记一个可折叠的区域。在SCSS/Less中,你也可以使用// #region// #endregion作为折叠标记。

改进的CSS折叠

改进对新属性的CSS支持

以前,VS Code 会为一些实验性的 CSS 属性显示“未知属性”错误,例如 backdrop-filter

CSS未知属性

您要么必须完全关闭CSS linting,要么忍受这个错误,即使您正在使用允许您使用实验性CSS属性的CSS框架,例如PostCSS

在此版本中,数据来源于Mozilla Developer Network,VS Code 现在可以识别87个新的CSS属性。如果您能在MDN上找到一个CSS属性,VS Code应该能够识别它。

此外,利用来自MDN的数据,VS Code现在在CSS/SCSS/Less中提供了增强的补全功能,显示每个CSS属性的语法和状态值。

由MDN数据支持的CSS支持

尽管目前还没有内置支持来验证CSS属性值,但CSSTree验证器扩展也使用了来自MDN的数据,并根据其值定义语法为每个属性值提供了linting功能:

CSSTree

Markdown 现在支持工作区符号搜索。首次打开 Markdown 文件后,您可以使用 (⌘T (Windows, Linux Ctrl+T)) 来搜索当前工作区中所有 Markdown 文件的标题:

VS Code 文档仓库中的 Markdown 工作区符号

持久化Markdown预览

当你重新打开VS Code时,Markdown预览现在会自动恢复:

当VS Code重新启动时,Markdown预览自动重新打开

以前,每当您重新启动VS Code时,预览都必须重新打开。

TypeScript 2.8.3

VS Code 现在附带 TypeScript 2.8.3。此版本修复了许多重要的错误

JavaScript 和 TypeScript 组织导入

JavaScript 和 TypeScript 的整理导入功能现已退出预览。运行 整理导入 (⇧⌥O (Windows, Linux Shift+Alt+O)) 可以快速删除未使用的导入并排序剩余的导入在您的 JavaScript 和 TypeScript 源代码中。

你现在还可以配置在保存时运行组织导入,使用新的editor.codeActionsOnSave设置。以下是启用保存时对TypeScript文件进行组织导入的设置:

"[typescript]": {
    "editor.codeActionsOnSave": {
        "source.organizeImports": true
    }
},
"[typescriptreact]": {
    "editor.codeActionsOnSave": {
        "source.organizeImports": true
    }
}

调试

Logpoint 改进

Logpoints 在上一个版本中引入,我们已经改进了它们的易用性和实用性:

  • IntelliSense(智能补全)已添加到嵌入在日志消息和条件断点中的表达式中。

  • 在Node.js调试中使用Logpoints时,嵌入日志消息中的结构化对象在调试控制台中显示为可展开的对象:

    Logpoint表达式的IntelliSense

  • Node.js 调试中的日志点现在在调试控制台中显示其源位置:

    日志点位置

  • 由于日志点和断点可以通过点击编辑器边栏中的图标轻松删除,您可能会意外丢失日志消息或断点条件。为了防止这种情况发生,VS Code 现在会在通过点击边栏删除带有条件或日志消息的断点时提示您。该提示让您可以选择禁用断点而不是删除它。

  • 最后但同样重要的是,我们在调试菜单中添加了一个新断点 > 日志点...操作。

扩展开发

对活动栏的贡献

随着越来越多的扩展创建自定义视图,并且大多数都贡献给了文件资源管理器,我们注意到资源管理器变得杂乱无章。为了扩展规模,VS Code 现在提供了一种方式来贡献到活动栏。例如,现在有一个测试贡献到活动栏。扩展现在可以做出自己的贡献。

测试视图容器

现在在活动栏中为扩展提供了一个新的测试贡献,以贡献与测试相关的视图。这个测试贡献默认是空的并且隐藏的,只有在有视图贡献给它时才会显示。示例展示了如何将mocha自定义视图贡献到活动栏中的测试活动中。

"contributes": {
    "views": {
        "test": [
            {
                "id": "mocha",
                "name": "mocha"
            }
        ]
    }
}

测试视图容器

自定义视图容器

扩展现在可以使用贡献点viewsContainers在活动栏中定义额外的活动。

"contributes": {
        "viewsContainers": {
            "activitybar": [
                {
                    "id": "package-explorer",
                    "title": "Package Explorer",
                    "icon": "resources/package-explorer.svg"
                }
            ]
        },
        "views": {
            "package-explorer": [
                {
                    "id": "package-dependencies",
                    "name": "Dependencies"
                },
                {
                    "id": "package-outline",
                    "name": "Outline"
                }
            ]
        }
}

自定义视图容器

图标规格

  • Size: 图标为24x24,居中于50x40的正方形上。

  • Color: 图标应使用单一的单色。

  • Format: 建议图标使用SVG格式,但任何图像文件类型都可以接受。

  • States: 所有图标继承以下状态样式:

    State Opacity
    Default 60%
    Hover 100%
    Active 100%

一个命令被注册以显示每个已注册的视图容器。在上面的Package Explorer示例中,它将是视图:显示Package Explorer。当您运行命令视图:打开视图...时,您还可以找到所有列出的视图容器。

打开视图

注意:建议将相关的视图分组到一个视图容器中,而不是为每个视图创建一个视图容器。

源代码控制中的自定义视图

您现在可以将与源代码管理(SCM)相关的自定义视图贡献到活动栏中的源代码管理视图容器中。您可以像在资源管理器中一样显示、隐藏和重新排序这些视图。

"contributes": {
    "views": {
        "scm": [
            {
                "id": "git-compare",
                "name": "Compare"
            }
        ]
    }
}

SCM 自定义视图

文件系统提供者

扩展现在可以从任意来源(如FTP服务器)提供文件和文件夹,VS Code 将像处理常规文件一样处理它们。为此,请使用 FileSystemProvider 接口,该接口与扩展关联的URI方案(如 ftp)一起使用。通过该接口,编辑器可以发现和管理文件和文件夹(创建、删除、读取和写入)。

来自文件系统提供者的文件和文件夹

VS Code 还可以读取和修改由文件系统提供者提供的配置文件(settings.jsontasks.jsonlaunch.json)。

语言标识符和文档选择器

文件系统提供者的加入意味着并非所有文件都存储在磁盘上,扩展应该意识到这一点。简短但重要的信息是,并非所有文档都存储在磁盘上,如果你的扩展依赖于磁盘访问,你必须首先检查scheme

为了提高意识,我们添加了一条信息消息,当您仅使用语言标识符而不是文档过滤器注册语言功能时,该消息会显示。有关更多详细信息,请访问文档选择器主题。

最后,有一个示例扩展,您可以使用它进行测试。它实现了一个将所有内容保存在内存中的文件系统,没有任何内容存储在磁盘上,您可以针对此测试您的语言功能。获取扩展这里

注意:TextDocument.isUntitled

由于增加了文件系统提供者,我们调整了TextDocument.isUntitled的语义,使其仅对新创建的文档(使用untitled方案)为true。在此之前,所有非来自磁盘的文档都被视为未命名。这一更改可能会影响您的扩展程序的行为,特别是如果它假设未命名的文档存储在磁盘上。

读取诊断信息

有一个新的API用于读取诊断信息,并在诊断信息发生变化时收到通知,请参见languages.getDiagnosticslanguages.onDidChangeDiagnostics。例如,SCM扩展现在可以在与团队共享更改之前检查是否有错误。

精炼的重命名提供者

我们已经改进了RenameProvider API,现在它可以选择性地实现一个名为prepareRename的新函数。通过这个函数,提供者可以帮助VS Code解析和验证要重命名的符号。

在文档更改事件中包含基于偏移量的信息

TextDocumentContentChangeEvent 有一个新属性 rangeOffset,它与 rangeLength 一起,允许扩展使用 (offset,length) 坐标来跟踪文本文档的更改。

源代码操作类型

CodeActionKind.Source 标识适用于整个文件的代码操作。组织导入是 Source 代码操作的一个很好的例子,因为它可以从文件中的任何位置触发。

Source 代码操作不会显示在普通的快速修复灯泡菜单中。它们必须使用 editor.action.sourceAction 命令显式请求。Source 代码操作也会显示在新的源操作上下文菜单中。

组织导入代码操作

基于Source代码操作,新添加的CodeActionKind.SourceOrganizeImports标识了一个组织导入的代码操作。这些操作可以通过editor.action.organizeImports触发,并有一个标准的键盘快捷键:⇧⌥O (Windows, Linux Shift+Alt+O)

如果您的扩展已经实现了组织导入功能,我们强烈建议您将其迁移到使用CodeActionKind.SourceOrganizeImports,以便用户在不同语言之间获得更一致的体验。

代码操作提供者元数据

registerCodeActionsProvider 现在接受一个可选的 CodeActionProviderMetadata 参数,该参数允许扩展告诉 VS Code 关于 CodeActionProvider 将提供的代码操作类型。VS Code 使用此信息来启用新的 重构源操作 上下文菜单。例如,重构 上下文菜单只有在注册了 CodeActionProvider 并且 CodeActionProviderMetadata 表明它将返回 refactor.* 代码操作时才会启用。

Webview API

webview API 允许扩展在 VS Code 中创建完全可自定义的视图。例如,内置的 Markdown 扩展使用 webviews 来渲染 Markdown 预览。Webviews 还可以用于构建超出 VS Code 原生 API 支持的复杂用户界面。

显示猫的GIF的网页视图

一个新的扩展编写页面涵盖了webview API。你也可以在这里找到一个webview API扩展的示例这里。我们期待看到扩展作者如何利用这个强大的新API。

应用程序范围设置

如果您希望您的设置在应用程序级别应用,而不是在窗口或资源级别被覆盖,您现在可以通过使用application范围来实现。

"configuration": {
    "properties": {
        "git.path": {
            "type": "string",
            "description": "Path to the git executable",
            "scope": "application"
        }
    }
}

注意:已弃用isExecutable属性,转而使用application范围,因为它们的目的相同。

提议的扩展API

在这个里程碑中,我们添加了几个新的提议扩展API。我们计划在未来的里程碑中将这些API添加到稳定版本中,一旦我们对它们有足够的信心。我们欢迎任何关于它们如何为您的扩展工作的反馈。

注意: 这些API仍然是提议的,因此要使用它们,您必须通过在package.json中添加"enableProposedApi": true来选择加入,并且您需要将vscode.proposed.d.ts复制到您的扩展项目中。还要注意,您不能发布使用enableProposedApi属性的扩展到市场。

集成终端API

集成终端API有几个提议的功能,可以帮助扩展作者访问所有终端,并支持在不同机器之间复用终端。现在所有终端都可以通过API访问,不像以前扩展只能访问它创建的终端:

console.log(window.terminals);

有一个匹配的事件:

window.onDidOpenTerminal(terminal => {
  console.log('New terminal: ' + terminal.name);
});

你也可以连接到来自终端进程的原始数据流,包括ANSI转义序列:

const terminal = window.createTerminal();
terminal.onData(data => {
  console.log('Terminal data: ' + data);
});

任务 API

任务API在扩展的任务查询和执行方面得到了进一步的改进。新支持的API是:

  • fetchTasks 接受一个过滤器,仅查询任务的子集。
  • taskExecutions 支持获取所有正在运行任务的执行对象。
  • TaskExecution 对象通过 executeTasktaskExecutions 或其中一个事件提供,可以使用 === 进行比较。

该API仍处于提议状态。

协议处理程序 API

协议处理程序API允许扩展处理系统范围内的URI。此功能对于跨应用程序集成非常有用,因为它允许其他应用程序将URI发送到特定的扩展。

export interface ProtocolHandler {
  handleUri(uri: Uri): void;
}

export namespace window {
  /**
   * Registers a protocol handler capable of handling system-wide URIs.
   */
  export function registerProtocolHandler(handler: ProtocolHandler): Disposable;
}

这是一个协议处理程序注册的示例:

function activate() {
  registerProtocolHandler({
    handleUri(uri: Uri) {
      console.log('Received URI', uri.toString());
    }
  });
}

对于这个API,URI权限和处理它们的扩展之间存在严格的关系:URI权限必须是扩展的ID(publisher.name)。以下面的URI为例:

 vscode://vscode.git/clone?url=foobar
 \____/   \________/ \___/ \_________/
   |           |        |       |
scheme    authority    path   query

此URI的权限是vscode.git,因此VS Code会将其转发给vscode.git扩展,前提是它已正确注册了协议处理程序。

由于在扩展注册之前URI可能已经被打开,因此还引入了一个新的onUri激活事件。这使得每当指向您的扩展的URI被打开时,您的扩展就会被激活。

注意: URI 处理在 Linux 上尚未支持

折叠提供者 API

在1.22版本中提出的折叠范围提供程序已更新,现在是一个正式的API。语言扩展现在可以提供语法感知的折叠范围。

/**
 * Register a folding range provider.
 *
 * Multiple providers can be registered for a language. In that case providers are asked in
 * parallel and the results are merged.
 * If multiple folding ranges start at the same position, only the range of the first registered provider is used.
 * If a folding range overlaps with an other range that has a smaller position, it is also ignored.
 *
 * A failing provider (rejected promise or exception) will
 * not cause a failure of the whole operation.
 *
 * @param selector A selector that defines the documents this provider is applicable to.
 * @param provider A folding range provider.
 * @return A [disposable](#_Disposable) that unregisters this provider when being disposed.
 */
export function registerFoldingRangeProvider(
  selector: DocumentSelector,
  provider: FoldingRangeProvider
): Disposable;

对扩展的贡献

我们的团队维护或贡献了许多VS Code扩展。本月最值得注意的是:

Sublime Text 快捷键映射扩展

The Sublime Text Keymap extension 现在可以从 Sublime 导入设置。

扩展首次启动时,会显示一个提示,展示所有可导入的Sublime设置。如果您想稍后导入设置,请使用命令面板中的Sublime Text Keymap: Import Sublime Text Settings命令(⇧⌘P (Windows, Linux Ctrl+Shift+P))。

Sublime设置导入器

工程

改进的冒烟测试稳定性

VS Code 一直有一个冒烟测试,用于严格控制质量。我们已经自动化了冒烟测试,但未能使其稳定。在这个里程碑中,我们致力于提高冒烟测试的稳定性和性能。更多详细信息可以在 pull request #47471 中找到。

新文档

使用 Azure 存储的网站部署教程

我们有一个新的将静态网站部署到Azure教程,用于使用Azure存储创建和部署静态网站。

VS Code 博客文章

最近在VS Code 博客上有两篇帖子:

显著变化

  • 10663: 在比较视图中切换标签时保留视图状态
  • 24634: macOS: 添加一个设置以启用窗口的acceptsFirstMouse
  • 29549: 多线程调试应支持停止线程
  • 46785: 当没有文件处于焦点时,“在 Finder 中显示”应打开工作区的文件夹
  • 47274: 节点日志点在调试控制台中显示为虚拟机源
  • 47478: 检测未完全安装的扩展
  • 48733: 引入一个选项 debug.enableAllHovers 以在调试时启用对悬停提供程序的调用
  • 46414: 在终端中调试Node.js进程时,调试控制台不再显示输出

感谢您

最后但同样重要的是,向以下帮助使VS Code变得更好的人们表示衷心的感谢!

vscode 的贡献:

vscode-extension-samples的贡献:

language-server-protocol的贡献:

vscode-languageserver-node的贡献:

vscode-chrome-debug的贡献:

vscode-chrome-debug的贡献:

  • @digeff
    • 忽略未知脚本的bp解析 PR #325
    • 清理堆栈跟踪,使其不包含完整文件路径 PR #322
    • 更新通知到最新版本 PR #320

vscode-node-debug2的贡献:

localization的贡献:

Transifex VS Code 项目团队有超过800名成员,每月约有100名活跃贡献者。我们感谢您的贡献,无论是提供新的翻译、投票翻译,还是建议流程改进。

这是本次发布的贡献者快照。有关项目的详细信息,包括贡献者名单,请访问项目网站 https://aka.ms/vscodeloc

  • 法语: Antoine Griffard, Adrien Clerbois, Thierry DEMAN-BARCELO, Jean Cuteaux, Quentin BRETON.
  • 意大利语: Alessandro Alpi, Andrea Dottor, Aldo Donetti, Marco Dal Pino, Riccardo Cappello.
  • 德语: J.M., Levin Rickert.
  • 西班牙语: Andy Gonzalez, Alejandro Medina, Alberto Poblacion, Thierry DEMAN-BARCELO, Eickhel Mendoza.
  • 日语: 田島俊也、貫山雄一、佐野陽介、本藤誠司、梶浦智史、杉田俊則。
  • 中文(简体): Joel Yang, YF, pluwen.
  • Chinese (Traditional): Winnie Lin, Duran Hsieh, Ryan Tseng, Alan Tsai, alantea, Will 保哥.
  • 韩语: ChangJoon Lee, HANSEULMARO KIM.
  • 俄语: Michel Ace, Ivan.
  • 保加利亚语: Любомир Василев.
  • 匈牙利语: Tar Dániel.
  • 葡萄牙语(巴西): Alessandro Fragnani, Roberto Fonseca, Marcelo Fernandes, Rodrigo Crespi, Matheus Palu, Bruno Sonnino, Douglas Eccker, douglas.martim.
  • 葡萄牙语(葡萄牙): Hugo Martins, Daniel Correia, Isac Van Dunem, Tiago Costa, João Mata.
  • 土耳其语: Adem Coşkuner, Burak Karahan, Özgür Öktem, Ömer Büyükçelik.
  • 波斯尼亚语: Muharem Basanovic, Bahrudin Hrnjica, Ismar Bašanović, Almir Vuk.
  • 捷克: Vít Staniček, Vojtěch Habarta, m_fr, Frantisek Veris, Jakub Skořepa, Michal Zobec, Ferdinand Prantl, Ľubomír Kováč, Jan Brudný.
  • 荷兰语: Marco van den Hout, Maarten van Stam, Gerald Versluis.
  • 芬兰语: Petri Niinimäki, Feetu Nyrhinen.
  • 印地语: 梵天。
  • 印度尼西亚语: Febrian Setianto (Feber), Wildan Mubarok, Adrian M. R., G-RiNe Project, Joseph Aditya P G, Mulia Arifandi Nasution, Herman Prawiro.
  • 拉脱维亚语: kozete, Pēteris Kļaviņš, Edgars, Simone Chiaretta.
  • 波兰语翻译: Joanna Skurzyńska, Mateusz Wyczawski.
  • 罗马尼亚: Schiriac Robert.
  • 塞尔维亚语: Jean Cuteaux.
  • 泰语: ภูมิไผท จันทรศรีวงศ์.
  • 乌克兰语: Dmytro Kyrychuk, Borys Lebeda.
  • 世界语: Andy Hampton.