# :-: 什么是本地化和国际化
下面内容来自来自[wikipedia](https://zh.wikipedia.org/wiki/%E5%9B%BD%E9%99%85%E5%8C%96%E4%B8%8E%E6%9C%AC%E5%9C%B0%E5%8C%96):
> 本地化则是指当移植软件时,加上与特定区域设置有关的信息和翻译文件的过程。国际化是指在设计软件,将软件与特定语言及地区脱钩的过程。当软件被移植到不同的语言及地区时,软件本身不用做内部工程上的改变或修正。
本地化的国际化的英文分别是Localization和internationalization,由于字母过多,它们被简化成了L10n和i18n,其中i18n的简写由于其中间有足足十八个字母等原因而更加常用。
Minecraft本身就提供了本地化和国际化方案。在`assets/minecraft/lang`文件夹下,便有着各种语言的语言文件。
# :-: 为自己的Mod添加语言文件
在前几章节,创建的第一个物品钻石棒子,拿在手中的名称是`item.diamondStick.name`而不是钻棒。同样彩虹方块是`tile.bm.rainBow.name`而不是彩虹石,这正是因为没有添加语言文件。
由于Minecraft的默认语言是英语,所以我们必须先支持英语,再支持中文(当初我直接支持中文,到最后才知道要先支持英语),新建文件夹`src/main/resources/assets/bm/lang`,并在其中创建文件`en_US.lang`,注意哈,等号两边莫得空格,如果有那么语言文件无法加载
`src/main/resources/assets/bm/lang/en_US.lang`
~~~
item.diamondStick.name=Diamond Stick
tile.bm.rainBow.name=RainBow Block
~~~
如果搞不清楚语言文件等号前面应该使用什么,可以先不写,在游戏中看一看,然后把不正常的部分写入语言文件。
最后其他的(创造物品栏的标题)就自己改吧。
* `item.diamondStick.name`便是金蛋的名称,这个名称由该物品的`setUnlocalizedName`方法设置
* `tile.bm.rainBow.name`便是草块的名称,这个名称由该方块的`setUnlocalizedName`(或setBlockName)方法设置
当然,作为面向中国人开发的模组,中文语言文件还是要有滴,在同一个文件夹下创建`zh_CN.lang`
`src/main/resources/assets/bm/lang/zh_CN.lang.lang`
~~~
item.diamondStick.name=钻棒
tile.bm.rainBow.name=彩虹石
~~~
当然,你也可以添加其他语言文件,如繁体中文(zh_TW)等,语言文件的文件名通常按照(https://zh.wikipedia.org/wiki/ISO_639-1)(https://zh.wikipedia.org/wiki/ISO_3166-1)代码标准。
最后说一句,语言文件**一定要使用UTF-8编码**。