ONScripter如何汉化?
看过下代码,里面SJIS转UTF16的码表是硬编码进去的。unsigned short sjis_2_utf16;
static unsigned short sjis_2_utf16_org[] = {
{0x8140,0x3000},
{0x8141,0x3001},
{0x8142,0x3002},
{0x8143,0xff0c},
{0x8144,0xff0e},
// 省略10000行……
void initSJIS2UTF16()
{
int i = 0;
while( sjis_2_utf16_org ){
sjis_2_utf16 - 0x8140] = sjis_2_utf16_org;
i++;
}
}
unsigned short convSJIS2UTF16( unsigned short in )
{
return sjis_2_utf16[ in - 0x8140 ];
}
莫非要把GBK/BIG5的也一个个硬编码进去??
请教各位大人,ONS汉化有没有方便点的方法? 尝试用GNU iconv? 这个好,赞一个先 引用第1楼Miliardo于2007-02-11 19:00发表的:
尝试用GNU iconv?
看了看iconv,的确是好东西,不过好象嵌入到ONS里也挺麻烦的……
ONS的代码感觉上很乱,看上去好像是读一个字->转换->渲染->读下一个字,iconv()应该是转换一个字符串的吧,一个个字来会不会很慢?
小弟对LINUX编程一窍不通,想请叫下大人,SDL在Windows下是独立的图形接口?还是调用DX/OGL的?运行效率相比DX/OGL如何? Linux
* 视频显示使用X11,利用XFree86 DGA扩展的优势,全屏显示使用新的w MTRR加速。
* 声音使用OSS API。
* 使用clone()系统调用和SysV IPC,或者glibc-2.1的pthreads实现线程。
提示:你可以通过SDL_GetWMInfo()取得SDL驱动接口的隐藏部分,从而可以实现诸如去除窗口要素和图标化窗口等效果。
Win32
* 有两个版本,一个是适合所有基于Win32的系统的安全版本,另一个是基于DirectX的高性能版本。
* 安全版本的视频显示采用GDI。高性能版本采用DirectDraw,并支持硬件加速。
* 安全版本的音频回放采用waveOut API。高性能版本采用DirectSound。
提示:你必须在主线程中定期的读取Windows消息队列,以保持程序能够作出响应。
实际上Linux下似乎也可以支持Alsa、ESD、Artsd等音频接口了…… 感谢大人解释~~~~ 你如果会编程的话,只要自动生成一个GBK/BIG5到utf16的编码表文件,复制粘贴到那里就可以了,完全不需要用到别的东西。 恩……虽然的确可以达到目的,但个人不是很喜欢这种方法。
本来就奇怪原作者为什么不用libiconv之类的库而选择把码表硬编码进来,不但代码量大了,将来移植到别的语言平台上本地化也不是那么好玩。
感觉上ONS完全可以摆脱NS的束缚使用Unicode而不是ANSI,把ANSI的脚本转换成Unicode是轻而易举的事情。现在用ANSI了,还是硬编码的码表,做本地化工作时就头痛了。 为了兼容NS的nscript.dat……能用Unicode么……XD 这个就是NS的“束缚”……
不过ONS好象没提供自己的脚本编译器,要靠NS的 = =b
希望ONS的作者提供一个Unicode版本的编译器和主程序,至于nscript.dat……重新编译吧