program-in-chinese / overview

中文编程的历史、现状和展望。issue 中进行相关问题的讨论.

Home Page:https://zhuanlan.zhihu.com/codeInChinese

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

关于汉化关键词的标准化执行策略

4b5ent1 opened this issue · comments

commented

ref:github.com//issues/40

#40 已经讨论了很多了,目前还没有下一步安排。个人认为采样已经充分,可以考虑通过投票等方式进行关键词标准化讨论。

关于投票我觉得可以这样:首先分编程语言,其次对于每个[关键词/组合]进行投票/讨论。比如typescript的if/else,现有关键词集:https://github.com/program-in-chinese/overview/wiki/英文关键词汉化 ,从中选项进行投票,有不同意见可以留言讨论。

建议结合命名讨论关键词: #40 (comment)
毕竟, 即使"标准化"了, 也要通过积累好用好读的实例进行推广.

举个例吧.
https://rustwiki.org/zh-CN//rust-by-example/flow_control/if_else.html 中的片段:

    if n < 0 {
        print!("{} is negative", n);
    } else if n > 0 {
        print!("{} is positive", n);
    } else {
        print!("{} is zero", n);
    }

根据wiki页的待选, 将if/else试换为若/不若, 觉得不若 若 n > 0不大一目了然:

    若 n < 0 {
        print!("{} is negative", n);
    } 不若 若 n > 0 {
        print!("{} is positive", n);
    } 不若 {
        print!("{} is zero", n);
    }

通过这样的实例, 可以排除一些待选项.

另外, 关键词选取也和语法设计有关, 比如if let例子:


#![allow(unused_variables)]
fn main() {
#[derive(Debug)]
enum UsState {
   Alabama,
   Alaska,
}

enum Coin {
   Penny,
   Nickel,
   Dime,
   Quarter(UsState),
}
let coin = Coin::Penny;
let mut count = 0;
if let Coin::Quarter(state) = coin {
    println!("State quarter from {:?}!", state);
} else {
    count += 1;
}
}

转换后(考虑本土化, 毕竟四分之一硬币不大接地气, 更不用说上面有每个州这种知识):

如果 令 硬币::四分之一硬币(州) = 硬币 {
    println!("{:?}州的四分之一硬币!", 州);
}

个人第一次看到这个语法, 理解有限, 只觉得let用在这里本身就有点勉强. 感觉和令/让都有距离, 一时想不到合适的代替. 如理解有偏差请指教.

commented

@nobodxbodon 之前错过前面的回复,刚看到这个。目前个人对这个问题的处理,就是关键词可以尽量不汉化,如果是中文化,大部分都需要新的语法。
关于else if的问题,按照上面的逻辑,一种就是不翻译else,一种就是跟python一样,合并成elif这种

commented

先存档#save/archive