ExtJS4本地化

工作后干的活有点乱七八糟,被折磨死
每一段时间就要学新的语言。2011下半年是C#,2012年,轮换到了JavaScript

最近的任务是用ExtJS设计前端,这玩意强大到足以取代Silverlight,非常适合配合RESTful API使用,使用AJAX获取JSON或XML类型的数据,前端页面的生成完全不需要PHP/JSP,仅HTML+JS已经足够。这种情况下,前端可以和API所在服务端完全分离,部署在不同的服务器上,甚至前端可以放在用户本地运行

第一个任务是攻克多语言化(老大乃将这种任务扔给素人情何以堪)
网上搜索了一下,还有人专门写了插件(ext-locale-loader),但这种需要给每一自设计的页面弄一份语言拷贝的方式让余菊花一紧
后来阅读ExtJS的自带文档,发现有本地化的详细指引($EXTJS_FOLDER/docs/index.html#!/guide/localization)
一步步来就实现了ExtJS自身的UI元件在用户选择不同语言时的本地化

实现后的效果

演示页面:extlocalize.html
ExtJS语言列表RawData:languages.js(仅保留4个语言)
逻辑+UI:extlocalize.js
切换语言的逻辑其实非常简单,判断页面的传入参数(没错,静态页面也可以有参数),利用AJAX加载语言文件,然后执行语言文件中的代码,更新字符串

extlocalize.html

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <title>Localization example</title>
    <!-- Ext Library Files -->
    <link rel="stylesheet" type="text/css" href="ext/resources/css/ext-all.css">
    <script src="ext/ext-all-debug.js"></script>
    <!-- App Scripts -->
    <script src="languages.js"></script>
    <script src="extlocalize.js"></script>
</head>
<body>
    <div id="languages"></div>
    <div id="datefield"></div>
    <div id="emailfield"></div>
    <div id="grid"></div>
</body>
</html>

languages.js

/**
 * by kuyur@kuyur.info
 * 2012.2.3
 */
Ext.namespace('Ext.local');

Ext.local.languages = [
    ['en', 'English'],
    ['ja', 'Japanese(日本語)'],
    ['zh_CN', 'Simplified Chinese(简体中文)'],
    ['zh_TW', 'Traditional Chinese(繁體中文)']
];

extlocalize.js

/**
 * by kuyur@kuyur.info
 * 2012.2.3
 */
Ext.Loader.setConfig({enabled: true});
Ext.Loader.setPath('Ext.ux', 'ext/examples/ux/');
Ext.require([
    'Ext.data.*',
    'Ext.tip.QuickTipManager',
    'Ext.form.*',
    'Ext.ux.data.PagingMemoryProxy',
    'Ext.grid.Panel'
]);

Ext.onReady(function() {

    MultiLangDemo = (function() {
        return {
            init: function() {
            	var store = Ext.create('Ext.data.ArrayStore', {
            	    fields: ['code', 'language'],
            	    data  : Ext.local.languages //from languages.js
            	});

            	var combo = Ext.create('Ext.form.field.ComboBox', {
            	    renderTo: 'languages',
            	    margin: '10, 0, 0, 10',
            	    store: store,
            	    displayField: 'language',
            	    queryMode: 'local',
            	    emptyText: 'Select a language...',
            	    hideLabel: true,
            	    width: 200,
            	    listeners: {
            	        select: {
            	            fn: function(cb, records) {
            	                var record = records[0];
            	                window.location.search = Ext.urlEncode({"lang":record.get("code")});
            	            },
            	            scope: this
            	        }
            	    }
            	});

            	var params = Ext.urlDecode(window.location.search.substring(1));

            	if (params.lang) {
            	    var url = Ext.util.Format.format('ext/locale/ext-lang-{0}.js', params.lang);

            	    Ext.Ajax.request({
            	        url: url,
            	        success: this.onSuccess,
            	        failure: this.onFailure,
            	        scope: this
            	    });

            	    // check if there's really a language with passed code
            	    var record = store.findRecord('code', params.lang, null, null, null, true);
            	    // if language was found in store, assign it as current value in combobox

            	    if (record) {
            	        combo.setValue(record.data.language);
            	    }
            	} else {
            	    // no language found, default to english
            	    this.setup();
            	}

            	Ext.tip.QuickTipManager.init();
            },
            onSuccess: function(response) {
                try {
                    eval(response.responseText);
                } catch (e) {
                    Ext.Msg.alert('Failure', e.toString());
                }
                this.setup();
            },
            onFailure: function() {
                Ext.Msg.alert('Failure', 'Failed to load locale file.');
                this.setup();
            },
            setup: function() {
                Ext.create('Ext.FormPanel', {
                    renderTo: 'datefield',
                    margin: '10, 0, 0, 10',
                    frame: true,
                    title: 'Date picker',
                    width: 380,
                    defaultType: 'datefield',
                    items: [{
                        fieldLabel: 'Date',
                        name: 'date'
                    }]
                });
                Ext.create('Ext.FormPanel', {
                    renderTo: 'emailfield',
                    margin: '10, 0, 0, 10',
                    labelWidth: 100,
                    frame: true,
                    title: 'E-mail Field',
                    width: 380,
                    defaults: {
                        msgTarget: 'side',
                        width: 340
                    },
                    defaultType: 'textfield',
                    items: [{
                        fieldlabel: 'Email',
                        name: 'email',
                        vtype: 'email'
                    }]
                });

                var monthArray = Ext.Array.map(Ext.Date.monthNames, function (e) { return [e]; });
                var ds = Ext.create('Ext.data.Store', {
                     fields: ['month'],
                     remoteSort: true,
                     pageSize: 6,
                     proxy: {
                         type: 'pagingmemory',
                         data: monthArray,
                         reader: {
                             type: 'array'
                         }
                     }
                 });

                Ext.create('Ext.grid.Panel', {
                    renderTo: 'grid',
                    margin: '10, 0, 0, 10',
                    width: 380,
                    height: 203,
                    title:'Month Browser',
                    columns:[{
                        text: 'Month of the year',
                        dataIndex: 'month',
                        width: 240
                    }],
                    store: ds,
                    bbar: Ext.create('Ext.toolbar.Paging', {
                        pageSize: 6,
                        store: ds,
                        displayInfo: true
                    })
                });
                // trigger the data store load
                ds.load();
            }
        };
    })();

    MultiLangDemo.init();
});

以上仅是ExtJS UI自身的本地化。

自己系统中的文字如何本地化呢?
余的做法基本是沿着ExtJS本地化的思路,将系统用到的字符串集中在单个文件中,这也有利于后期扩展更多的语言
像Date picker/Email Field/Month Browser/Month of the year就是系统自身的语言,不应该硬编码到UI中
在加载ExtJS语言文件的时候,同时也加载系统自身的语言文件进行刷新
系统语言文件也必须使用和ExtJS语言文件相同的后缀,如en/ja/zh_CN/zh_TW

效果:

演示页面:multiplelanguages.html
逻辑+UI:multiplelanguages.js
语言列表RawData:languages.js(和上面一样)
系统默认语言文件(必须):myproject-js/myproject-lang.js(余将默认语言弄成了日文)
系统的本地化语言文件(可选):(没有参数时会保留默认语言文件中的设定)
locale/myproject-lang-en.js
locale/myproject-lang-ja.js
locale/myproject-lang-zh_CN.js
locale/myproject-lang-zh_TW.js

multiplelanguages.html

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <title>Localization example</title>
    <!-- Ext Library Files -->
    <script src="myproject-js/myproject-lang.js"></script>
    <link rel="stylesheet" type="text/css" href="ext/resources/css/ext-all.css">
    <script src="ext/ext-all-debug.js"></script>
    <!-- App Scripts -->
    <script src="languages.js"></script>
    <script src="multiplelanguages.js"></script>
</head>
<body>
    <div id="languages"></div>
    <div id="datefield"></div>
    <div id="emailfield"></div>
    <div id="grid"></div>
</body>
</html>

multiplelanguages.js
将UI的生成全部集中到setup函数里了

/**
 * by kuyur@kuyur.info
 * 2012.2.3
 */
Ext.Loader.setConfig({
    enabled: true
});
Ext.Loader.setPath('Ext.ux', 'ext/examples/ux/');
Ext.require(['Ext.data.*', 'Ext.tip.QuickTipManager', 'Ext.form.*', 'Ext.ux.data.PagingMemoryProxy', 'Ext.grid.Panel']);

Ext.onReady(function() {

    var params;
    MultiLangDemo = (function() {
        return {
            init: function() {
                // load ExtJS locale
                params = Ext.urlDecode(window.location.search.substring(1));
                if (params.lang) {
                    var url = Ext.util.Format.format('ext/locale/ext-lang-{0}.js', params.lang);
                    Ext.Ajax.request({
                        url: url,
                        success: this.onLoadExtLocaleSuccess,
                        failure: this.onLoadExtLocaleFailure,
                        scope: this
                    });
                } else {
                    // no language found, locale of ExtJS will be english as default
                    this.loadmyprojectLocale();
                }
            },
            onLoadExtLocaleSuccess: function(response) {
                try {
                    eval(response.responseText);
                } catch (e) {
                    Ext.Msg.alert('Failure', e.toString());
                }
                this.loadmyprojectLocale();
            },
            onLoadExtLocaleFailure: function() {
                Ext.Msg.alert('Failure', 'Failed to load locale file.');
                this.loadmyprojectLocale();
            },
            loadmyprojectLocale: function() {
                // load locale for myproject
                if (params.lang) {
                    var urlmyprojectLocale = Ext.util.Format.format('locale/myproject-lang-{0}.js', params.lang);
                    Ext.Ajax.request({
                        url: urlmyprojectLocale,
                        success: this.onLoadmyprojectLocaleSuccess,
                        failure: this.onLoadmyprojectLocaleFailue,
                        scope: this
                    });
                } else {
                    this.setup();
                }
            },
            onLoadmyprojectLocaleSuccess: function(response) {
                try {
                    eval(response.responseText);
                } catch (e) {
                    Ext.Msg.alert('Failure', e.toString());
                }
                this.setup();
            },
            onLoadmyprojectLocaleFailue: function() {
                Ext.Msg.alert('Failure', 'Failed to load myproject locale file.');
                this.setup();
            },
            setup: function() {
                var store = Ext.create('Ext.data.ArrayStore', {
                    fields: ['code', 'language'],
                    data: Ext.local.languages //from languages.js
                });

                var combo = Ext.create('Ext.form.field.ComboBox', {
                    renderTo: 'languages',
                    margin: '10, 0, 0, 10',
                    store: store,
                    displayField: 'language',
                    queryMode: 'local',
                    emptyText: myproject.Message.SelectALanguage,
                    hideLabel: true,
                    width: 200,
                    listeners: {
                        select: {
                            fn: function(cb, records) {
                                var record = records[0];
                                window.location.search = Ext.urlEncode({
                                    "lang": record.get("code")
                                });
                            },
                            scope: this
                        }
                    }
                });
                if (params.lang) {
                    // check if there's really a language with passed code
                    var record = store.findRecord('code', params.lang, null, null, null, true);
                    // if language was found in store, assign it as current value in combobox
                    if (record) {
                        combo.setValue(record.data.language);
                    }
                }

                Ext.create('Ext.FormPanel', {
                    renderTo: 'datefield',
                    margin: '10, 0, 0, 10',
                    frame: true,
                    title: myproject.Message.PickDate,
                    width: 380,
                    defaultType: 'datefield',
                    items: [{
                        fieldLabel: myproject.Message.Date,
                        name: 'date'
                    }]
                });
                Ext.create('Ext.FormPanel', {
                    renderTo: 'emailfield',
                    margin: '10, 0, 0, 10',
                    labelWidth: 100,
                    frame: true,
                    title: myproject.Message.EmailFieldTitle,
                    width: 380,
                    defaults: {
                        msgTarget: 'side',
                        width: 340
                    },
                    defaultType: 'textfield',
                    items: [{
                        fieldlabel: 'Email',
                        name: 'email',
                        vtype: 'email'
                    }]
                });

                var monthArray = Ext.Array.map(Ext.Date.monthNames, function(e) {
                    return [e];
                });
                var ds = Ext.create('Ext.data.Store', {
                    fields: ['month'],
                    remoteSort: true,
                    pageSize: 6,
                    proxy: {
                        type: 'pagingmemory',
                        data: monthArray,
                        reader: {
                            type: 'array'
                        }
                    }
                });

                Ext.create('Ext.grid.Panel', {
                    renderTo: 'grid',
                    margin: '10, 0, 0, 10',
                    width: 380,
                    height: 203,
                    title: myproject.Message.MonthList,
                    columns: [{
                        text: myproject.Message.MonthTitle,
                        dataIndex: 'month',
                        width: 240
                    }],
                    store: ds,
                    bbar: Ext.create('Ext.toolbar.Paging', {
                        pageSize: 6,
                        store: ds,
                        displayInfo: true
                    })
                });
                // trigger the data store load
                ds.load();
            }
        };
    })();

    MultiLangDemo.init();
});

myproject-js/myproject-lang.js

/**
 * by kuyur@kuyur.info
 * 2012.2.3
 */
var myproject = {};
myproject.Message = {};
myproject.Message.SelectALanguage = '言語を選択ください...';
myproject.Message.PickDate = '日付を選択';
myproject.Message.Date = '日付';
myproject.Message.EmailFieldTitle = 'メールアドレス';
myproject.Message.MonthList = '月の一覧';
myproject.Message.MonthTitle = '月順';

locale/myproject-lang-en.js

/**
 * by kuyur@kuyur.info
 * 2012.2.3
 */
if (myproject.Message) {
	myproject.Message.SelectALanguage = 'Select a language...';
	myproject.Message.PickDate = 'Date Picker';
	myproject.Message.Date = 'Date';
	myproject.Message.EmailFieldTitle = 'Email';
	myproject.Message.MonthList = 'Month Browser';
	myproject.Message.MonthTitle = 'Month of the year';
}

locale/myproject-lang-ja.js

/**
 * by kuyur@kuyur.info
 * 2012.2.3
 */
if (myproject.Message) {
	myproject.Message.SelectALanguage = '言語を選択ください...';
	myproject.Message.PickDate = '日付を選択';
	myproject.Message.Date = '日付';
	myproject.Message.EmailFieldTitle = 'メールアドレス';
	myproject.Message.MonthList = '月の一覧';
	myproject.Message.MonthTitle = '月順';
}

locale/myproject-lang-zh_CN.js

/**
 * by kuyur@kuyur.info
 * 2012.2.3
 */
if (myproject.Message) {
	myproject.Message.SelectALanguage = '请选择一种语言...';
	myproject.Message.PickDate = '选择日期';
	myproject.Message.Date = '日期';
	myproject.Message.EmailFieldTitle = '电子邮件地址';
	myproject.Message.MonthList = '月份一览';
	myproject.Message.MonthTitle = '月份';
}

locale/myproject-lang-zh_TW.js

/**
 * by kuyur@kuyur.info
 * 2012.2.3
 */
if (myproject.Message) {
	myproject.Message.SelectALanguage = '請選擇一種語言...';
	myproject.Message.PickDate = '選擇日期';
	myproject.Message.Date = '日期';
	myproject.Message.EmailFieldTitle = '電子郵件地址';
	myproject.Message.MonthList = '月份一覽';
	myproject.Message.MonthTitle = '月份';
}

注意事项:
1.ExtJS库的解压目录名要一致,代码中的为ext
2.由于AJAX的本地请求会因为安全问题被浏览器禁止,需要将文件放到服务器才能测试

源文件下载:localize.rar

48 次浏览 | 没有评论
2012年2月3日 | 归档于 技术, 程序

[EAC][111223]スターフォックス64 3D プラチナサウンドトラック(wav+log)[403MB]


Disc 1

01     オープニング     1:44
02     タイトル     0:57
03     セレクト     1:10
04     マップ     1:18
05     スタートデモ1     0:58
06     スタートデモ2     0:13
07     コーネリア     2:25
08     メテオ     1:48
09     タイタニア&マクベス     2:16
10     セクターX     2:36
11     ゾネス     2:21
12     エリア6     2:06
13     ベノム     1:57
14     セクターY&ダーラ     2:17
15     フィチナ&セクターZ     1:55
16     ボルス     1:30
17     カタリナ     2:21
18     アクアス     2:31
19     ワープ     2:01
20     キャットのテーマ     0:16
21     ビルのテーマ     0:11
22     ボスA     1:53
23     ボスB     1:35
24     ボスC     1:27
25     スターウルフのテーマ     2:12
26     作戦完了     0:58
27     作戦失敗     1:07
28     プレイヤーダウン     0:07
29     ゲームオーバー     0:45
30     トレーニング     1:06
31     バトルセレクト     0:40
32     バトル     1:28
33     バトルクライマックス     0:35
34     バトル終了1     0:30
35     バトル終了2     0:31
36     決意     0:13
37     地下基地内     0:35
38     アンドルフ     2:17
39     最終決戦     1:44
40     オールクリア     0:58
41     スタッフクレジット1     5:10
42     スタッフクレジット2     4:19
Disc length 65:01

阅读全文…

175 次浏览 | 1 条评论
2012年1月12日 | 归档于 音楽
标签:

[115 30d][自抓][EAC][111223]トモダチコレクション プラチナサウンドトラック[WAV+LOG]357m


nintedo – トモダチコレクション プラチナサウンドトラック

01.    トモレジ        03:06
02.    部屋にて        03:25
03.    島の昼        01:41
04.    島の夜        02:31
05.    ニュース速報        00:48
06.    Miiニュース        01:07
07.    たべもの屋さん        01:10
08.    服屋さん        01:24
09.    インテリア屋さん        01:38
10.    多数決ホール        00:31
11.    相性テスター        00:52
12.    適職の館        01:07
13.    質問ホール        01:17
14.    いっしょにあそぼ        01:21
15.    演歌・ごじゅうざか        00:46
16.    ラップ・GOOD・RAP        00:31
17.    ムート歌謡・あめのとばかいどう        01:04
18.    J-POP・きみのあたらしそら        00:45
19.    ヘビメタ・YOKU-BOU        00:38
20.    アイドル・トキメキデイズ        00:36
21.    シングル・友達成立        00:06
22.    シングル・仲直り成功        00:10
23.    シングル・仲直り失敗        00:07
24.    恋のモヤモヤ        01:16
25.    シングル・告白成功        00:11
26.    シングル・告白失敗        00:08
27.    告白失敗        01:31
28.    離婚        01:23
29.    恋人との別れ        01:03
30.    シングル・大好物        00:16
31.    シングル・とても良い反応        00:06
32.    シングル・良い反応        00:06
33.    シングル・普通反応        00:06
34.    シングル・悪い反応        00:06
35.    シングル・とても悪い反応        00:06
36.    シングル・苦手な食べ物        00:10
37.    シングル・胃腸薬/風邪薬        00:06
38.    シングル・体調回復        00:07
39.    市役所        01:49
40.    セーブ画面        01:14
41.    オルゴール・トモレジ        00:44
42.    オルゴール・島の昼        00:41
43.    オルゴール・たべもの屋さん        00:41
44.    オルゴール・相性テスター        00:52
45.    オルゴール・Miiニュース        00:57
46.    オルゴール・適職の館        00:56
47.    街角ライブ・たのしげタンゴ風        00:58
48.    街角ライブ・さっそうアレグロ風        00:50
49.    街角ライブ・ゆかいなワルツ風        00:56
50.    街角ライブ・すずしげボサノバ風        01:02
51.    街角ライブ・ほのぼのフォークダンス風        00:47
52.    街角ライブ・ものうげワルツ風        00:43
53.    旅・沖縄        01:05
54.    旅・ハワイ        01:23
55.    旅・香港/上海        01:17
56.    旅・タイ        01:03
57.    旅・イタリア        01:02
58.    旅・フランス        01:01
59.    旅・スペイン        01:27
60.    旅・京都        01:21
61.    縁あって        01:07
62.    スタッフクレジット        02:18

阅读全文…

157 次浏览 | 没有评论
2012年1月10日 | 归档于 音楽
标签:

[EAC][111223]マリオカート Wii プラチナサウンドトラック[WAV+LOG]457m


Disc 1

01     オープニングムービー     1:11
02     タイトル     1:08
03     オプション/ライセンス管理     0:35
04     メインメニュー     2:28
05     コースインファンファーレ     0:15
06     ルイージサーキット/マリオサーキット     2:10
07     モーモーカントリー     2:12
08     キノコキャノン     1:57
09     キノピオファクトリー     2:34
10     ココナッツモール     2:17
11     DKスノーボードクロス     2:13
12     ワリオこうざん     2:18
13     デイジーサーキット     2:13
14     ノコノコみさき     2:06
15     メイプルツリーハウス     2:22
16     グラグラ火山     2:37
17     カラカラいせき     2:18
18     ムーンリッジ&ハイウェイ     2:04
19     クッパキャッスル     2:45
20     レインボーロード     2:48
21     一位ゴールファンファーレ(グランプリ・VS)     0:07
22     上位ゴールファンファーレ(グランプリ・VS)     0:08
23     上位ゴールリザルト(グランプリ・VS)     0:54
24     下位ゴールファンファーレ(グランプリ・VS)     0:09
25     下位ゴールリザルト     0:43
26     ブロック広場     2:00
27     アクアリゾート     2:21
28     ファンキースタジアム     1:48
29     ワンワンルーレット     2:20
30     ドッスンさばく     2:12
31     チーム内一位(バトル)/新記録更新(タイムアタック)ファンファーレ     0:06
32     チーム勝利(バトル)/ランクイン(タイムアタック)ファンファーレ     0:06
33     引き分けファンファーレ     0:06
34     チーム勝利(バトル)/ランクイン(タイムアタック)リザルト     0:27
35     チーム敗北(バトル)/ランク外(タイムアタック)ファンファーレ     0:06
36     チーム敗北(バトル)/ランク外(タイムアタック)リザルト     0:48
37     マリオカートチャンネル メニュー     0:47
38     ランキング     1:00
39     Wi-Fiメニュー     2:37
40     Wi-Fi観戦中/ゴーストリプレイ     0:54
41     ウィニングラン~廟彰式     1:28
42     スタッフロールA     1:48
43     スタッフロールB     2:20
Disc length 65:46

折叠此处内容

Exact Audio Copy V1.0 beta 3 from 29. August 2011

EAC 抓取日志文件从9. 一月 2012, 18:15

nintedo / マリオカート Wii プラチナサウンドトラック

使用驱动器  :TSSTcorpCDDVDW TS-L633B   Adapter: 1  ID: 0

读取模式      : 可靠Secure
使用精确流     : 是
清空音频缓存    : 否
使用 C2 指示器 : 否

读取偏移校正:               : 6
读取 Lead-In 和 Lead-Out : 否
用静音填充抓取中丢失偏移的采样       : 是
去除首尾静音块               : 否
在CRC 计算中使用了空样本       : 是
已用接口                  : Win NT 及 2000 本地 Win32 接口

所用输出模式: : 内部 WAV 函数
样本格式    : 44.100 Hz; 16 Bit; 立体声

已抓取 CD 的 TOC

音轨 |    起始    |    长度    |  起始扇区  |  结束扇区
——————————————–
1 |  0:00.00 |  1:11.15 |      0 |   5339
2 |  1:11.15 |  1:08.11 |   5340 |  10450
3 |  2:19.26 |  0:35.28 |  10451 |  13103
4 |  2:54.54 |  2:28.04 |  13104 |  24207
5 |  5:22.58 |  0:15.27 |  24208 |  25359
6 |  5:38.10 |  2:10.26 |  25360 |  35135
7 |  7:48.36 |  2:11.57 |  35136 |  45017
8 | 10:00.18 |  1:57.28 |  45018 |  53820
9 | 11:57.46 |  2:33.62 |  53821 |  65357
10 | 14:31.33 |  2:17.22 |  65358 |  75654
11 | 16:48.55 |  2:13.00 |  75655 |  85629
12 | 19:01.55 |  2:17.64 |  85630 |  95968
13 | 21:19.44 |  2:13.22 |  95969 | 105965
14 | 23:32.66 |  2:06.21 | 105966 | 115436
15 | 25:39.12 |  2:22.12 | 115437 | 126098
16 | 28:01.24 |  2:37.27 | 126099 | 137900
17 | 30:38.51 |  2:18.33 | 137901 | 148283
18 | 32:57.09 |  2:03.74 | 148284 | 157582
19 | 35:01.08 |  2:44.57 | 157583 | 169939
20 | 37:45.65 |  2:47.66 | 169940 | 182530
21 | 40:33.56 |  0:07.05 | 182531 | 183060
22 | 40:40.61 |  0:07.67 | 183061 | 183652
23 | 40:48.53 |  0:53.62 | 183653 | 187689
24 | 41:42.40 |  0:09.00 | 187690 | 188364
25 | 41:51.40 |  0:43.02 | 188365 | 191591
26 | 42:34.42 |  2:00.22 | 191592 | 200613
27 | 44:34.64 |  2:20.68 | 200614 | 211181
28 | 46:55.57 |  1:48.30 | 211182 | 219311
29 | 48:44.12 |  2:20.14 | 219312 | 229825
30 | 51:04.26 |  2:12.32 | 229826 | 239757
31 | 53:16.58 |  0:05.57 | 239758 | 240189
32 | 53:22.40 |  0:05.63 | 240190 | 240627
33 | 53:28.28 |  0:05.52 | 240628 | 241054
34 | 53:34.05 |  0:26.42 | 241055 | 243046
35 | 54:00.47 |  0:06.32 | 243047 | 243528
36 | 54:07.04 |  0:48.33 | 243529 | 247161
37 | 54:55.37 |  0:46.57 | 247162 | 250668
38 | 55:42.19 |  1:00.07 | 250669 | 255175
39 | 56:42.26 |  2:37.10 | 255176 | 266960
40 | 59:19.36 |  0:54.36 | 266961 | 271046
41 | 60:13.72 |  1:28.00 | 271047 | 277646
42 | 61:41.72 |  1:47.57 | 277647 | 285728
43 | 63:29.54 |  2:19.40 | 285729 | 296193

范围状态及错误

已选择范围

文件名 D:\platinum soundtrack\[EAC][111223]マリオカート Wii プラチナサウンドトラック[WAV+LOG]\nintedo – マリオカート Wii プラチナサウンドトラック.wav

峰值电平 100.0 %
抓取速度 6.7 X
范围质量 100.0 %
复制 CRC F9DBED29
复制成功

没有错误发生

状态报告结尾

—- CUETools DB Plugin V2.1.3

[CTDB TOCID: 9REfjTGdPAzJv6NnVa4sh7vvEpA-] found, Submit result: 9REfjTGdPAzJv6NnVa4sh7vvEpA- has been confirmed
[601952a1] (1/1) Accurately ripped

阅读全文…
204 次浏览 | 没有评论
2012年1月10日 | 归档于 音楽
标签:

[EAC][111223]パイロットウイングス リゾート プラチナサウンドトラック[WAV+LOG]244M


Disc 1

01     オープニング     0:15
02     メインテーマ     2:55
03     飛行機 イントロ     0:21
04     飛行機     4:00
05     飛行機 成功ジングル     0:10
06     ロケットベルト イントロ     0:27
07     ロケットベルト     4:37
08     ロケットベルト 成功ジングル     0:10
09     グライダー イントロ     0:27
10     グライダー     4:39
11     グライダー 成功ジングル     0:11
12     結果画面     1:51
13     ジェット機     4:00
14     飛行機 時間切れジングル     0:10
15     スーパーロケットベルト     3:37
16     ロケットベルト 失敗ジングル     0:09
17     ペダルグライダー     4:10
18     グライダー 時間切れジングル     0:11
19     ムササビ・タイム     1:10
20     グライダー 失敗ジングル     0:09
21     飛行機 失敗ジングル     0:09
22     出現ジングル     0:12
23     おめでとうファンファーレ     0:15
24     スタッフクレジット     3:34
Disc length 37:49

折叠此处内容

Exact Audio Copy V1.0 beta 3 from 29. August 2011

EAC 抓取日志文件从9. 一月 2012, 4:56

nintedo / パイロットウイングス リゾート プラチナサウンドトラック

使用驱动器  :TSSTcorpCDDVDW TS-L633B   Adapter: 1  ID: 0

读取模式      : 可靠Secure
使用精确流     : 是
清空音频缓存    : 否
使用 C2 指示器 : 否

读取偏移校正:               : 6
读取 Lead-In 和 Lead-Out : 否
用静音填充抓取中丢失偏移的采样       : 是
去除首尾静音块               : 否
在CRC 计算中使用了空样本       : 是
已用接口                  : Win NT 及 2000 本地 Win32 接口

所用输出模式: : 内部 WAV 函数
样本格式    : 44.100 Hz; 16 Bit; 立体声

已抓取 CD 的 TOC

音轨 |    起始    |    长度    |  起始扇区  |  结束扇区
——————————————–
1 |  0:00.00 |  0:15.30 |      0 |   1154
2 |  0:15.30 |  2:55.28 |   1155 |  14307
3 |  3:10.58 |  0:20.60 |  14308 |  15867
4 |  3:31.43 |  4:00.04 |  15868 |  33871
5 |  7:31.47 |  0:10.27 |  33872 |  34648
6 |  7:41.74 |  0:26.42 |  34649 |  36640
7 |  8:08.41 |  4:36.62 |  36641 |  57402
8 | 12:45.28 |  0:10.21 |  57403 |  58173
9 | 12:55.49 |  0:27.32 |  58174 |  60230
10 | 13:23.06 |  4:39.25 |  60231 |  81180
11 | 18:02.31 |  0:10.68 |  81181 |  81998
12 | 18:13.24 |  1:51.03 |  81999 |  90326
13 | 20:04.27 |  4:00.30 |  90327 | 108356
14 | 24:04.57 |  0:10.22 | 108357 | 109128
15 | 24:15.04 |  3:36.50 | 109129 | 125378
16 | 27:51.54 |  0:09.00 | 125379 | 126053
17 | 28:00.54 |  4:10.30 | 126054 | 144833
18 | 32:11.09 |  0:11.15 | 144834 | 145673
19 | 32:22.24 |  1:09.72 | 145674 | 150920
20 | 33:32.21 |  0:08.47 | 150921 | 151567
21 | 33:40.68 |  0:09.01 | 151568 | 152243
22 | 33:49.69 |  0:12.10 | 152244 | 153153
23 | 34:02.04 |  0:15.33 | 153154 | 154311
24 | 34:17.37 |  3:33.62 | 154312 | 170348

范围状态及错误

已选择范围

文件名 D:\platinum soundtrack\[EAC][111223]パイロットウイングス リゾート プラチナサウンドトラック[TAK+LOG]\nintedo – パイロットウイングス リゾート プラチナサウンドトラック.wav

峰值电平 100.0 %
抓取速度 5.8 X
范围质量 100.0 %
复制 CRC 4EBD027D
复制成功

没有错误发生

状态报告结尾

—- CUETools DB Plugin V2.1.3

[CTDB TOCID: _I6pKhPDpRjtKBup5uuMRMCu858-] found, Submit result: _I6pKhPDpRjtKBup5uuMRMCu858- has been confirmed
[4a571a03] (1/1) Accurately ripped
阅读全文…

222 次浏览 | 没有评论
2012年1月9日 | 归档于 音楽
标签:

(C81) (同人音楽) [arcane753.(MANYO・霜月はるか・日山尚)] 虚木ノ咎人

―――――――――――――――――――――――――――――――――――――――――――――

虚木ノ咎人
arcane753.(MANYO・霜月はるか・日山尚)
NAM-003

C81 12/31(土)西あ-09b

其処は、空木の蝶が生まれた沼――
arcane753.(霜月はるか・MANYO・日山 尚)が贈るオリジナルアルバム「羽ノ亡キ蝶」に纏わる、
新たな物語を紡ぐボーカルCD

―――――――――――――――――――――――――――――――――――――――――――――

01.虚木ノ咎人
02.蜘蛛の居る沼
03.冬空に舞う蝶
04.虚木ノ咎人(off vocal)
05.蜘蛛の居る沼(off vocal)
06.冬空に舞う蝶(off vocal)

01 作・編曲:MANYO / 作詞:日山尚 / 歌:HaRuhiCo・霜月はるか
02 作曲:霜月はるか /編曲:MANYO / 作詞:日山尚 / 歌:霜月はるか
03 作・編曲:MANYO / 作詞:日山尚 / 歌:霜月はるか・真理絵

―――――――――――――――――――――――――――――――――――――――――――――

C81自摸第17弹

试听:

阅读全文…

444 次浏览 | 没有评论
2012年1月8日 | 归档于 音楽

(C81) (同人音楽) [GILDIA×猫の福音] GILDIA×猫の福音 特典CD

―――――――――――――――――――――――――――――――――――――――――――――

GILDIA×猫の福音 特典CD
GILDIA×猫の福音

C81 12/31(土)西う-08b

朔夜&erica/SHIKI&黒猫スペシャルユニット
6曲入りミニアルバム無料配布

―――――――――――――――――――――――――――――――――――――――――――――

1.希望ノ在処
2.Lapucelle
3.リリスの心室
4.Masquerade
5.赦しの城
6.missing prayer

―――――――――――――――――――――――――――――――――――――――――――――

C81自摸第16弹

试听:

阅读全文…

238 次浏览 | 没有评论
2012年1月8日 | 归档于 音楽

(C81) (同人音楽) [六弦アリス] 迷イノ森、夢十夜。 -凛トシテ-

―――――――――――――――――――――――――――――――――――――――――――――

迷イノ森、夢十夜。 -凛トシテ-
六弦アリス
RGAL-0022

C81 12/31(土)西あ-39b

迷いの森でどこへ向かうのか、鍵を銜える猫と、佇む一人の少女――

―――――――――――――――――――――――――――――――――――――――――――――

01.鍵猫時計塔はもうすぐ0時
02.ムーンライト症候群
03.回転木馬は逆回り
04.眩暈ハ散リ行ク桜ニモ似テ
05.星屑少女は迷宮入り
06.緋のローレライ ~R.I.P. Edit~
07.凛として

―――――――――――――――――――――――――――――――――――――――――――――

C81自摸第14弹

试听:

阅读全文…

223 次浏览 | 没有评论
2012年1月6日 | 归档于 音楽

(C81) (同人音楽) [六弦アリス] 迷イノ森、夢十夜。 -人トシテ-

―――――――――――――――――――――――――――――――――――――――――――――

迷イノ森、夢十夜。 -人トシテ-
六弦アリス
RGAL-0021

C81 12/31(土)西あ-39b

戸惑いの青春群像。二度と戻れぬ孤独の美樂―――。
夢かうつつか幻か。浮き世の蝶は真実を映した。

―――――――――――――――――――――――――――――――――――――――――――――

01.人として
02.個性がないと云う個性
03.時効なき逃亡者
04.早春行進曲
05.イザナイノモリ
06.背徳日和
07.Lullabye For Alice ~Reborn Edit~

―――――――――――――――――――――――――――――――――――――――――――――

C81自摸第13弹

试听:

阅读全文…

201 次浏览 | 没有评论
2012年1月5日 | 归档于 音楽

(C81) (同人音楽) [ポヤッチオ] プチリズムふぉお///


―――――――――――――――――――――――――――――――――――――――――――――

プチリズムふぉお///
ポヤッチオ
KTHT-0014

C81 12/31(土)西あ-18a

萌えキュン系オリジナルボーカルアルバム。

―――――――――――――――――――――――――――――――――――――――――――――

01.異星人と恋愛
02.ナナプラス+
03.そうだ、ピクニックに行こう。
04.とっとこPARADE
05.えくすとりーむ・もふもふ
06.恥ずかし乙女と恋のユメ
07.青春ただいま進行中!
08.くまくんはコットンで出来ている
09.メイドの星からランデブー
10.Cookin’CookieS

01 歌:めらみぽっぷ 作詞作曲:きくお
02 歌:ななひら 作詞作曲:狐夢想
03 歌:愛原圭織 作詞作曲:かたほとり
04 歌:桃箱 作詞:海兎 作曲:すみじゅん
05 歌:ココ 作詞作曲:ちょむP
06 歌:なゆ 作詞作曲:しの
07 歌:ゆきまめ 作詞作曲:かたほとり
08 歌:kana 作詞作曲:さつき が てんこもり
09 歌:Nimo 作詞作曲:かたほとり
10 歌:ななひら 作詞作曲:れれれP

illustration:切符
CDマスタリング:Dios/シグナルP

―――――――――――――――――――――――――――――――――――――――――――――

C81自摸第12弹

试听:

阅读全文…