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

尝试JDK汉化 #37

Closed
nobodxbodon opened this issue Oct 16, 2017 · 7 comments
Closed

尝试JDK汉化 #37

nobodxbodon opened this issue Oct 16, 2017 · 7 comments

Comments

@nobodxbodon
Copy link
Member

@hummerstudio 建议, 开专题讨论. 下面内容来自原帖

核心库的中文化是个工作量很大的挑战, 因为包括文档的翻译, 而且可能会有不可能汉化的部分(比如无法用一个新interface取代Iterable的问题). 这里是尝试对Java核心库(从最常用的部分开始)的汉化. 比如ArrayList汉化成"数组列表", 单元测试示例如下:

public class 数组列表测试 {

  // TODO: 添加测试“取”方法
  
  @Test
  public void 测试添加元素类() {
    数组列表<Integer> 表 = new 数组列表<>();
    表.添加(1);
    assertTrue(表.长度() == 1);
  }

  @Test
  public void 测试添加整数元素类() {
    数组列表<Integer> 表 = new 数组列表<>();
    表.添加(0, 2);
    assertTrue(表.长度() == 1);
    表.添加(0, 1);
    assertTrue(表.长度() == 2);
  }

  @Test
  public void 测试Collections方法() {
    数组列表<Integer> 表 = new 数组列表<>();
    表.添加(2);
    表.添加(1);
    Collections.sort(表.原型());
    assertTrue(表.取(0) == 1);
  }
}

尝试过的方法:

  1. 封装原类, ArrayList例子
  2. 汉化源代码, Collection例子

1对接口(Interface)不适用, 2还是有比如上面Iterable的问题.

@hummerstudio #9 (comment) 提出项目开展方法:

  1. 先确定翻译范围,列出来。包括(类所属)包名、类名、(类的)方法名。方法名有API可以很方便的打印出来,具体我不记得了,IDE显示方法名就是用的这个API。
  2. 在步骤1的基础上,看看哪些是常见的词(专业术语,有特殊指定的词等),讨论制定一个标准的英文->中文的对照表。
  3. 在步骤2的基础上,参考步骤1的输出,就可以让社区的人员来自愿领取翻译任务了,这时候已经没有什么技术性可研了,写好教程即可。
  4. 另外要做好版本控制,做到一个官方JDK版本对应一个汉化版本。

大体上是这样一个步骤,步骤3的实施过程可以根据步骤2的结果看看复杂性如何,是否可以引入一些方便的工具来进一步降低难度和效率(比如开发一个源码自动修改、打包的工具,只需要翻译人员提供一个特定格式的文本文件,工具读取文件,自动修改英文原版源码,并作打包)。

上面所说的自动修改工具在有一点很初步的尝试.

@swizl
Copy link

swizl commented Oct 18, 2017

加油
汉化JDK,关键字不汉一下吗?

@nobodxbodon
Copy link
Member Author

@swizl 觉得两件事分开吧, 因为牵涉到的代码库也是分开的. 其实汉化JDK的整体工作量肯定(远)大于通过修改Java编译器来支持汉化关键字的. 但两者都有后续工作量的问题(追赶官方的新版和补丁). 和@htwx的汉化TypeScript和周边库类似. 顶楼先立个flag, 看看有没有更好的方式或者愿意跟进的开发者.

@nobodxbodon
Copy link
Member Author

如果做了个JDK汉化版本, 是否会有版权问题?, 算未雨绸缪吧. 也许也适用于汉化.Net库.

@nobodxbodon
Copy link
Member Author

https://github.com/HL4A/hl4a-core 是更活跃的实现. 在#51 中继续关注.

@swizl
Copy link

swizl commented Aug 7, 2018

这几天基于 openJDK 10 做了,JDK的关键字汉化,比较成功。
`包 hello;

公 类 Hello {
公 固 空 main(String[] args) {
System.out.println("你好 SwizL!");
}
}`
这一段代码编译、执行成功。
近期会写文章介绍 openJDK 10 编译 和 汉化。

@swizl swizl reopened this Aug 7, 2018
@nobodxbodon
Copy link
Member Author

@swizl 祝贺! 期待文章~

@nobodxbodon
Copy link
Member Author

如有进展再行开启.

@nobodxbodon nobodxbodon mentioned this issue Jan 28, 2019
61 tasks
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