Commit e676ab65 authored by 神楽坂玲奈's avatar 神楽坂玲奈

fix

parent 783a2327
...@@ -118,7 +118,7 @@ ...@@ -118,7 +118,7 @@
</div> </div>
</div> </div>
<div class="modal-footer"> <div class="modal-footer">
<button type="button" class="btn btn-secondary" data-dismiss="modal">取消</button> <button i18n type="button" class="btn btn-secondary" data-dismiss="modal">取消</button>
<button i18n id="submit" type="submit" [disabled]="!theForm.form.valid" class="btn btn-primary">安装</button> <button i18n id="submit" type="submit" [disabled]="!theForm.form.valid" class="btn btn-primary">安装</button>
</div> </div>
</form> </form>
......
...@@ -541,6 +541,9 @@ export class AppsService { ...@@ -541,6 +541,9 @@ export class AppsService {
app.local = local; app.local = local;
this.saveAppLocal(app); this.saveAppLocal(app);
app.status.status = "ready"; app.status.status = "ready";
if (app.id == 'ygopro') {
localStorage.removeItem('ygopro-locale')
}
} catch (e) { } catch (e) {
console.log("exception in doInstall", e); console.log("exception in doInstall", e);
throw e; throw e;
......
/**
* Created by zh99998 on 16/9/2.
*/
import {Component} from "@angular/core";
@Component({
moduleId: module.id,
selector: 'community',
templateUrl: 'community.component.html',
styleUrls: ['community.component.css'],
})
export class CommunityComponent {
}
...@@ -9,6 +9,7 @@ import {DownloadService} from "./download.service"; ...@@ -9,6 +9,7 @@ import {DownloadService} from "./download.service";
import {Http, URLSearchParams} from "@angular/http"; import {Http, URLSearchParams} from "@angular/http";
import {shell} from "electron"; import {shell} from "electron";
import WebViewElement = Electron.WebViewElement; import WebViewElement = Electron.WebViewElement;
import {SettingsService} from "./settings.sevices";
@Component({ @Component({
moduleId: module.id, moduleId: module.id,
...@@ -24,7 +25,7 @@ export class LobbyComponent implements OnInit { ...@@ -24,7 +25,7 @@ export class LobbyComponent implements OnInit {
currentApp: App; currentApp: App;
private apps: Map<string,App>; private apps: Map<string,App>;
constructor(private appsService: AppsService, private loginService: LoginService) { constructor(private appsService: AppsService, private loginService: LoginService, private settingsService: SettingsService) {
} }
async ngOnInit() { async ngOnInit() {
...@@ -38,6 +39,13 @@ export class LobbyComponent implements OnInit { ...@@ -38,6 +39,13 @@ export class LobbyComponent implements OnInit {
params.set('jid', this.loginService.user.username + '@mycard.moe'); params.set('jid', this.loginService.user.username + '@mycard.moe');
params.set('password', this.loginService.user.external_id.toString()); params.set('password', this.loginService.user.external_id.toString());
params.set('nickname', this.loginService.user.username); params.set('nickname', this.loginService.user.username);
switch(this.settingsService.getLocale()){
case 'zh-CN':
params.set('language', 'cn');
break;
default:
params.set('language', 'en');
}
if (this.currentApp.conference) { if (this.currentApp.conference) {
params.set('autojoin', this.currentApp.conference + '@conference.mycard.moe'); params.set('autojoin', this.currentApp.conference + '@conference.mycard.moe');
} }
......
<webview [src]="url" (will-navigate)="return_sso($event.url)" (did-get-redirect-request)="return_sso($event.newURL)"></webview> <webview [src]="url" (will-navigate)="return_sso($event.url)" (did-get-redirect-request)="return_sso($event.newURL)" (new-window)="openExternal($event.url)"></webview>
\ No newline at end of file \ No newline at end of file
...@@ -6,6 +6,7 @@ import {LoginService} from "./login.service"; ...@@ -6,6 +6,7 @@ import {LoginService} from "./login.service";
import * as crypto from "crypto"; import * as crypto from "crypto";
import * as querystring from "querystring"; import * as querystring from "querystring";
import * as url from "url"; import * as url from "url";
import {shell} from "electron";
@Component({ @Component({
moduleId: module.id, moduleId: module.id,
...@@ -46,4 +47,7 @@ export class LoginComponent { ...@@ -46,4 +47,7 @@ export class LoginComponent {
this.loginService.login(user); this.loginService.login(user);
} }
openExternal(url: string) {
shell.openExternal(url);
}
} }
...@@ -39,4 +39,4 @@ ...@@ -39,4 +39,4 @@
<login class="page" *ngIf="!loginService.logged_in"></login> <login class="page" *ngIf="!loginService.logged_in"></login>
<store class="page" *ngIf="loginService.logged_in" [hidden]="currentPage != 'store'"></store> <store class="page" *ngIf="loginService.logged_in" [hidden]="currentPage != 'store'"></store>
<lobby class="page" *ngIf="loginService.logged_in" [hidden]="currentPage != 'lobby'"></lobby> <lobby class="page" *ngIf="loginService.logged_in" [hidden]="currentPage != 'lobby'"></lobby>
<webview class="page" *ngIf="loginService.logged_in" [hidden]="currentPage != 'community'" src="https://ygobbs.com"></webview> <webview class="page" *ngIf="loginService.logged_in" [hidden]="currentPage != 'community'" src="https://ygobbs.com" (new-window)="openExternal($event.url)"></webview>
import {Component, Renderer, ChangeDetectorRef, OnInit, ElementRef, ViewChild} from "@angular/core"; import {Component, Renderer, ChangeDetectorRef, OnInit, ElementRef, ViewChild} from "@angular/core";
import {remote} from "electron"; import {remote, shell} from "electron";
import {LoginService} from "./login.service"; import {LoginService} from "./login.service";
const autoUpdater: Electron.AutoUpdater = remote.getGlobal('autoUpdater'); const autoUpdater: Electron.AutoUpdater = remote.getGlobal('autoUpdater');
declare const $: any; declare const $: any;
...@@ -89,4 +89,8 @@ export class MyCardComponent implements OnInit { ...@@ -89,4 +89,8 @@ export class MyCardComponent implements OnInit {
$(element.nativeElement).tooltip({placement: 'bottom', container: 'body'}) $(element.nativeElement).tooltip({placement: 'bottom', container: 'body'})
} }
} }
openExternal(url: string) {
shell.openExternal(url);
}
} }
...@@ -8,7 +8,6 @@ import {StoreComponent} from "./store.component"; ...@@ -8,7 +8,6 @@ import {StoreComponent} from "./store.component";
import {LobbyComponent} from "./lobby.component"; import {LobbyComponent} from "./lobby.component";
import {AppDetailComponent} from "./app-detail.component"; import {AppDetailComponent} from "./app-detail.component";
import {RosterComponent} from "./roster.component"; import {RosterComponent} from "./roster.component";
import {CommunityComponent} from "./community.component";
import {YGOProComponent} from "./ygopro.component"; import {YGOProComponent} from "./ygopro.component";
import {AppsService} from "./apps.service"; import {AppsService} from "./apps.service";
import {SettingsService} from "./settings.sevices"; import {SettingsService} from "./settings.sevices";
...@@ -19,7 +18,7 @@ import {DownloadService} from "./download.service"; ...@@ -19,7 +18,7 @@ import {DownloadService} from "./download.service";
imports: [BrowserModule, FormsModule, ReactiveFormsModule, HttpModule], imports: [BrowserModule, FormsModule, ReactiveFormsModule, HttpModule],
declarations: [ declarations: [
MyCardComponent, LoginComponent, StoreComponent, LobbyComponent, MyCardComponent, LoginComponent, StoreComponent, LobbyComponent,
CommunityComponent, AppDetailComponent, RosterComponent, YGOProComponent, AppDetailComponent, RosterComponent, YGOProComponent,
], ],
bootstrap: [MyCardComponent], bootstrap: [MyCardComponent],
providers: [ providers: [
......
...@@ -16,7 +16,7 @@ export class SettingsService { ...@@ -16,7 +16,7 @@ export class SettingsService {
static defaultLibraries = [ static defaultLibraries = [
{ {
"default": true, "default": true,
path: path.join(remote.app.getPath("appData"), "library") path: path.join(remote.app.getPath("appData"), "MyCardLibrary")
}, },
]; ];
libraries: Library[]; libraries: Library[];
......
...@@ -27,7 +27,7 @@ ...@@ -27,7 +27,7 @@
<button type="button" class="close" data-dismiss="modal" aria-label="Close"> <button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">&times;</span> <span aria-hidden="true">&times;</span>
</button> </button>
<h4 class="modal-title" id="myModalLabel1">单人模式</h4> <h4 i18n class="modal-title" id="myModalLabel1">单人模式</h4>
</div> </div>
<div class="modal-body"> <div class="modal-body">
<label i18n>选择对手</label> <label i18n>选择对手</label>
......
...@@ -121,9 +121,9 @@ export class YGOProComponent implements OnInit { ...@@ -121,9 +121,9 @@ export class YGOProComponent implements OnInit {
} }
} }
ngOnInit() { async ngOnInit() {
this.system_conf = path.join(this.app.local!.path, 'system.conf'); this.system_conf = path.join(this.app.local!.path, 'system.conf');
this.refresh(); await this.refresh();
let modal = $('#game-list-modal'); let modal = $('#game-list-modal');
...@@ -262,7 +262,7 @@ export class YGOProComponent implements OnInit { ...@@ -262,7 +262,7 @@ export class YGOProComponent implements OnInit {
win.minimize(); win.minimize();
let locale = this.settingsService.getLocale(); let locale = this.settingsService.getLocale();
if (localStorage.getItem('ygopro-locale') != locale) { if (localStorage.getItem('ygopro-locale') != locale) {
console.log(`try convert ygopro locale to ${locale}`) console.log(`try convert ygopro locale to ${locale}`);
try { try {
await new Promise((resolve, reject) => { await new Promise((resolve, reject) => {
let source = fs.createReadStream(path.join(this.app.local!.path, 'locales', locale, 'strings.conf')); let source = fs.createReadStream(path.join(this.app.local!.path, 'locales', locale, 'strings.conf'));
...@@ -296,7 +296,7 @@ export class YGOProComponent implements OnInit { ...@@ -296,7 +296,7 @@ export class YGOProComponent implements OnInit {
reject(error) reject(error)
}); });
}); });
localStorage.setItem('ygopro-locale', locale) localStorage.setItem('ygopro-locale', locale);
console.log(`convert ygopro locale to ${locale} success`) console.log(`convert ygopro locale to ${locale} success`)
} catch (error) { } catch (error) {
console.error(`convert ygopro locale to ${locale} failed`, error) console.error(`convert ygopro locale to ${locale} failed`, error)
...@@ -311,8 +311,9 @@ export class YGOProComponent implements OnInit { ...@@ -311,8 +311,9 @@ export class YGOProComponent implements OnInit {
reject(error); reject(error);
win.restore() win.restore()
}); });
child.on('exit', (code, signal) => { child.on('exit', async(code, signal) => {
// error 触发之后还可能会触发exit,但是Promise只承认首次状态转移,因此这里无需重复判断是否已经error过。 // error 触发之后还可能会触发exit,但是Promise只承认首次状态转移,因此这里无需重复判断是否已经error过。
await this.refresh();
resolve(); resolve();
win.restore() win.restore()
}) })
......
...@@ -2052,8 +2052,8 @@ ...@@ -2052,8 +2052,8 @@
} }
}, },
"version": { "version": {
"win32": "1.033.C-7", "win32": "1.033.C-8",
"darwin": "1.033.C-7" "darwin": "1.033.C-8"
}, },
"news": { "news": {
"zh-CN": [ "zh-CN": [
......
...@@ -40,7 +40,7 @@ ...@@ -40,7 +40,7 @@
// candy init // candy init
const params = new URLSearchParams(location.search); const params = new URLSearchParams(location.search);
Candy.View.Template.Login.form = '<form method="post" id="login-form" class="login-form">' + '<input type="hidden" id="nickname" name="nickname" value="' + params.nickname + '"/>' + '{{#displayUsername}}<input type="hidden" id="username" name="username" value="' + params.jid + '"/>' + '{{#displayDomain}} <span class="at-symbol">@</span> ' + '<select id="domain" name="domain">{{#domains}}<option value="{{domain}}">{{domain}}</option>{{/domains}}</select>' + "{{/displayDomain}}" + "{{/displayUsername}}" + '{{#presetJid}}<input type="hidden" id="username" name="username" value="{{presetJid}}"/>{{/presetJid}}' + '{{#displayPassword}}<input type="hidden" id="password" name="password" value="' + params.password + '"/>{{/displayPassword}}' + '<input type="submit" class="button" value="{{_loginSubmit}}" /></form>';; Candy.View.Template.Login.form = '<form method="post" id="login-form" class="login-form">' + '<input type="hidden" id="nickname" name="nickname" value="' + params.nickname + '"/>' + '{{#displayUsername}}<input type="hidden" id="username" name="username" value="' + params.jid + '"/>' + '{{#displayDomain}} <span class="at-symbol">@</span> ' + '<select id="domain" name="domain">{{#domains}}<option value="{{domain}}">{{domain}}</option>{{/domains}}</select>' + "{{/displayDomain}}" + "{{/displayUsername}}" + '{{#presetJid}}<input type="hidden" id="username" name="username" value="{{presetJid}}"/>{{/presetJid}}' + '{{#displayPassword}}<input type="hidden" id="password" name="password" value="' + params.password + '"/>{{/displayPassword}}' + '<input type="submit" class="button" value="{{_loginSubmit}}" /></form>';
Candy.Util.setCookie('candy-nostatusmessages', '1', 365); Candy.Util.setCookie('candy-nostatusmessages', '1', 365);
Candy.init('wss://chat.mycard.moe:5280/websocket', { Candy.init('wss://chat.mycard.moe:5280/websocket', {
...@@ -49,7 +49,7 @@ ...@@ -49,7 +49,7 @@
autojoin: params.get('autojoin') && [params.get('autojoin')], autojoin: params.get('autojoin') && [params.get('autojoin')],
resource: 'mycard-' + Math.random().toString().split('.')[1] resource: 'mycard-' + Math.random().toString().split('.')[1]
}, },
view: {assets: 'res/', language: 'cn'} view: {assets: 'res/', language: params.get('language')}
}); });
Candy.Core.connect(params.get('jid'), params.get('password'), params.get('nickname')); Candy.Core.connect(params.get('jid'), params.get('password'), params.get('nickname'));
......
<?xml version="1.0" ?> <?xml version="1.0" ?><xliff version="1.2" xmlns="urn:oasis:names:tc:xliff:document:1.2">
<xliff version="1.2" xmlns="urn:oasis:names:tc:xliff:document:1.2"> <file datatype="plaintext" original="ng2.template" source-language="zh-CN" target-language="en-US">
<file datatype="plaintext" original="ng2.template" source-language="zh-CN" target-language="en-US"> <body>
<body> <trans-unit datatype="html" id="fbfb7c4354663a67786aa5aee748d1f38b8fe71c">
<trans-unit datatype="html" id="fbfb7c4354663a67786aa5aee748d1f38b8fe71c"> <source>游戏</source>
<source>游戏</source> <target>Library</target>
<target>Library</target>
</trans-unit>
</trans-unit> <trans-unit datatype="html" id="c4fc2b3584e7581cddb08bb1ebfa41e601195d5b">
<trans-unit datatype="html" id="c4fc2b3584e7581cddb08bb1ebfa41e601195d5b"> <source>社区</source>
<source>社区</source> <target>Community</target>
<target>Community</target>
</trans-unit>
</trans-unit> <trans-unit datatype="html" id="8422ff34db177236e8f54d415b07c972284c36bf">
<trans-unit datatype="html" id="8422ff34db177236e8f54d415b07c972284c36bf"> <source>切换账号</source>
<source>切换账号</source> <target>Change Account</target>
<target>Change Account</target>
</trans-unit>
</trans-unit> <trans-unit datatype="html" id="1761e51e36b01ae1e0012914bd58aa2a741d0401">
<trans-unit datatype="html" id="1761e51e36b01ae1e0012914bd58aa2a741d0401"> <source>已安装</source>
<source>已安装</source> <target>Installed</target>
<target>Installed</target>
</trans-unit>
</trans-unit> <trans-unit datatype="html" id="69f3fab778e92fcec3a8c38d53d771a36e6d5230">
<trans-unit datatype="html" id="69f3fab778e92fcec3a8c38d53d771a36e6d5230"> <source>推荐</source>
<source>推荐</source> <target>Recommend</target>
<target>Recommend</target>
</trans-unit>
</trans-unit> <trans-unit datatype="html" id="fc570ecca13755cb4a92e7513fbd55c2d412f23c">
<trans-unit datatype="html" id="fc570ecca13755cb4a92e7513fbd55c2d412f23c"> <source>迷之物体</source>
<source>迷之物体</source> <target>Something</target>
<target>Something</target>
</trans-unit>
</trans-unit> <trans-unit datatype="html" id="0873cd6df2d1f1016e02526aa9ba32415c1a11d8">
<trans-unit datatype="html" id="0873cd6df2d1f1016e02526aa9ba32415c1a11d8"> <source>东方 Project</source>
<source>东方 Project</source> <target>Touhou Project</target>
<target>Touhou Project</target>
</trans-unit>
</trans-unit> <trans-unit datatype="html" id="785db32107cc0b47564b05381a1d782021d77c67">
<trans-unit datatype="html" id="785db32107cc0b47564b05381a1d782021d77c67"> <source>东方旧作</source>
<source>东方旧作</source> <target>Touhou old series</target>
<target>Touhou old series</target>
</trans-unit>
</trans-unit> <trans-unit datatype="html" id="817376261844eb7eb0c035ed0e3fce744a96b6d9">
<trans-unit datatype="html" id="817376261844eb7eb0c035ed0e3fce744a96b6d9"> <source>已安装的运行库</source>
<source>已安装的运行库</source> <target>Installed Runtime Library</target>
<target>Installed Runtime Library</target>
</trans-unit>
</trans-unit> <trans-unit datatype="html" id="a8cae935472a05e1c8c9be436bb7b1bdea96a54a">
<trans-unit datatype="html" id="a8cae935472a05e1c8c9be436bb7b1bdea96a54a"> <source>安装</source>
<source>安装</source> <target>Install</target>
<target>Install</target>
</trans-unit>
</trans-unit> <trans-unit datatype="html" id="e6194d8a9c8da57b667847cd80f1da563f2c2b1e">
<trans-unit datatype="html" id="e6194d8a9c8da57b667847cd80f1da563f2c2b1e"> <source>导入</source>
<source>导入</source> <target>Import</target>
<target>Import</target>
</trans-unit>
</trans-unit> <trans-unit datatype="html" id="8bb533b37ee18bf8d09df19b4d7234b38f134909">
<trans-unit datatype="html" id="8bb533b37ee18bf8d09df19b4d7234b38f134909"> <source>正在下载</source>
<source>正在下载</source> <target>Downloading...</target>
<target>Downloading...</target>
</trans-unit>
</trans-unit> <trans-unit datatype="html" id="2fe99d94b20d6f8aba7814d8657037ec9d69d36c">
<trans-unit datatype="html" id="2fe99d94b20d6f8aba7814d8657037ec9d69d36c"> <source>正在安装...</source>
<source>正在安装...</source> <target>Installing...</target>
<target>Installing...</target>
</trans-unit>
</trans-unit> <trans-unit datatype="html" id="bea72fe35b7b9933e126b6ee3a6828c307ccc3d4">
<trans-unit datatype="html" id="bea72fe35b7b9933e126b6ee3a6828c307ccc3d4"> <source>正在卸载...</source>
<source>正在卸载...</source> <target>UnInstalling...</target>
<target>UnInstalling...</target>
</trans-unit>
</trans-unit> <trans-unit datatype="html" id="e5ee7e692c816893b6fd2f9375e6d8303cd794cd">
<trans-unit datatype="html" id="e5ee7e692c816893b6fd2f9375e6d8303cd794cd"> <source>等待安装...</source>
<source>等待安装...</source> <target>Pending...</target>
<target>Pending...</target>
</trans-unit>
</trans-unit> <trans-unit datatype="html" id="d3852e0147360b29d0d6076e95dd1ad0098a60db">
<trans-unit datatype="html" id="d3852e0147360b29d0d6076e95dd1ad0098a60db"> <source>运行</source>
<source>运行</source> <target>Start</target>
<target>Start</target>
</trans-unit>
</trans-unit> <trans-unit datatype="html" id="67adbad4f646bb8e1c440522bafea8fe5f7e6bfd">
<trans-unit datatype="html" id="67adbad4f646bb8e1c440522bafea8fe5f7e6bfd"> <source>设置</source>
<source>设置</source> <target>Custom</target>
<target>Custom</target>
</trans-unit>
</trans-unit> <trans-unit datatype="html" id="3d6cad40e26f99e39bc6f5925a890ba83b67ce5b">
<trans-unit datatype="html" id="3d6cad40e26f99e39bc6f5925a890ba83b67ce5b"> <source>联机</source>
<source>联机</source> <target>Network</target>
<target>Network</target>
</trans-unit>
</trans-unit> <trans-unit datatype="html" id="5eadb60473a54773298ee679a4ce6a19d9c2f31c">
<trans-unit datatype="html" id="5eadb60473a54773298ee679a4ce6a19d9c2f31c"> <source>复制</source>
<source>复制</source> <target>Copy</target>
<target>Copy</target>
</trans-unit>
</trans-unit> <trans-unit datatype="html" id="95d5e106e679433bec012420b1ab9334c294bc7e">
<trans-unit datatype="html" id="95d5e106e679433bec012420b1ab9334c294bc7e"> <source>选择服务器</source>
<source>选择服务器</source> <target>Select Server</target>
<target>Select Server</target>
</trans-unit>
</trans-unit> <trans-unit datatype="html" id="63346eb53d54138db02c1713ae58f73bb1b8786f">
<trans-unit datatype="html" id="63346eb53d54138db02c1713ae58f73bb1b8786f"> <source>新闻</source>
<source>新闻</source> <target>News</target>
<target>News</target>
</trans-unit>
</trans-unit> <trans-unit datatype="html" id="b1c134df688af90e436e49f6d3e9f6960f9497c6">
<trans-unit datatype="html" id="b1c134df688af90e436e49f6d3e9f6960f9497c6"> <source>了解更多</source>
<source>了解更多</source> <target>More Info</target>
<target>More Info</target>
</trans-unit>
</trans-unit> <trans-unit datatype="html" id="3ebbe3f1c691ec3184ac8c7a5f360706501e6b50">
<trans-unit datatype="html" id="3ebbe3f1c691ec3184ac8c7a5f360706501e6b50"> <source>名称</source>
<source>名称</source> <target>Name</target>
<target>Name</target>
</trans-unit>
</trans-unit> <trans-unit datatype="html" id="d58ff4f339ad18d82b08fb0615ba8c1cf373a4a2">
<trans-unit datatype="html" id="d58ff4f339ad18d82b08fb0615ba8c1cf373a4a2"> <source>操作</source>
<source>操作</source> <target>Action</target>
<target>Action</target>
</trans-unit>
</trans-unit> <trans-unit datatype="html" id="e090f6d9d8129a7b8b92387f05f37eb4b44c0b4e">
<trans-unit datatype="html" id="e090f6d9d8129a7b8b92387f05f37eb4b44c0b4e"> <source>卸载</source>
<source>卸载</source> <target>Uninstall</target>
<target>Uninstall</target>
</trans-unit>
</trans-unit> <trans-unit datatype="html" id="8d0792a89fc399aafb40cc1228cb8c04a2056883">
<trans-unit datatype="html" id="8d0792a89fc399aafb40cc1228cb8c04a2056883"> <source>本地文件</source>
<source>本地文件</source> <target>Local Files</target>
<target>Local Files</target>
</trans-unit>
</trans-unit> <trans-unit datatype="html" id="628c76783ac32e6c8b2ea9134397b8cb82a82cd6">
<trans-unit datatype="html" id="628c76783ac32e6c8b2ea9134397b8cb82a82cd6"> <source>浏览本地文件</source>
<source>浏览本地文件</source> <target>Browse</target>
<target>Browse</target>
</trans-unit>
</trans-unit> <trans-unit datatype="html" id="6d582ed48c57c91fc7cf10f36f3869cd33808d1d">
<trans-unit datatype="html" id="6d582ed48c57c91fc7cf10f36f3869cd33808d1d"> <source>校验完整性</source>
<source>校验完整性</source> <target>Verify integrity</target>
<target>Verify integrity</target>
</trans-unit>
</trans-unit> <trans-unit datatype="html" id="4809edca33b1a07d7d6e8905287d3825e676f2c8">
<trans-unit datatype="html" id="4809edca33b1a07d7d6e8905287d3825e676f2c8"> <source>安装 <x id="INTERPOLATION"/></source>
<source>安装 <target>Install <x id="INTERPOLATION"/></target>
<x id="INTERPOLATION"/>
</source> </trans-unit>
<target>Install <trans-unit datatype="html" id="f8e60167c7a0871ccf40ed2a0750311411dfd665">
<x id="INTERPOLATION"/> <source>即将开始安装 <x id="INTERPOLATION"/></source>
</target> <target>Preparing Installation <x id="INTERPOLATION"/></target>
</trans-unit> </trans-unit>
<trans-unit datatype="html" id="f8e60167c7a0871ccf40ed2a0750311411dfd665"> <trans-unit datatype="html" id="63a6c9b023e9e9f8ddfba70b0e24931008fa2510">
<source>即将开始安装 <source>安装位置</source>
<x id="INTERPOLATION"/> <target>Path</target>
</source>
<target>Preparing Installation </trans-unit>
<x id="INTERPOLATION"/> <trans-unit datatype="html" id="0b96c54bf810c6deb2c32253bf16b86d3c90da94">
</target> <source>快捷方式</source>
<target>Shortcuts</target>
</trans-unit>
<trans-unit datatype="html" id="63a6c9b023e9e9f8ddfba70b0e24931008fa2510"> </trans-unit>
<source>安装位置</source> <trans-unit datatype="html" id="8aa0a41ee6809b972d3904d96607ba5e6dc48fd9">
<target>Path</target> <source>创建 LaunchPad 快捷方式</source>
<target>Create Launchpad Shortcut</target>
</trans-unit>
<trans-unit datatype="html" id="0b96c54bf810c6deb2c32253bf16b86d3c90da94"> </trans-unit>
<source>快捷方式</source> <trans-unit datatype="html" id="da32e99069864644f0419f67858d93815e029b02">
<target>Shortcuts</target> <source>创建开始菜单快捷方式</source>
<target>Create Start Menu Shortcut</target>
</trans-unit>
<trans-unit datatype="html" id="8aa0a41ee6809b972d3904d96607ba5e6dc48fd9"> </trans-unit>
<source>创建 LaunchPad 快捷方式</source> <trans-unit datatype="html" id="d8a2d9a9f8854ad118381e6e30a41dc1959a4f0b">
<target>Create Launchpad Shortcut</target> <source>创建桌面快捷方式</source>
<target>Create Desktop Shortcut</target>
</trans-unit>
<trans-unit datatype="html" id="da32e99069864644f0419f67858d93815e029b02"> </trans-unit>
<source>创建开始菜单快捷方式</source> <trans-unit datatype="html" id="2ba33dd61b1ac70666322680f248e5336b3ee69a">
<target>Create Start Menu Shortcut</target> <source>依赖:</source>
<target>Dependencies</target>
</trans-unit>
<trans-unit datatype="html" id="d8a2d9a9f8854ad118381e6e30a41dc1959a4f0b"> </trans-unit>
<source>创建桌面快捷方式</source> <trans-unit datatype="html" id="f6f3be110e7043e3cfe71a7bd75b8b3be79bff5d">
<target>Create Desktop Shortcut</target> <source>取消</source>
<target>Cancel</target>
</trans-unit>
<trans-unit datatype="html" id="2ba33dd61b1ac70666322680f248e5336b3ee69a"> </trans-unit>
<source>依赖:</source> <trans-unit datatype="html" id="def237147323023c1f5ce0579345da19d4707fdb">
<target>Dependencies</target> <source>卡组</source>
<target>Deck</target>
</trans-unit>
<trans-unit datatype="html" id="def237147323023c1f5ce0579345da19d4707fdb"> </trans-unit>
<source>卡组</source> <trans-unit datatype="html" id="a842d4536fdee499a55c753c50810254347ced32">
<target>Deck</target> <source>编辑</source>
<target>Edit</target>
</trans-unit>
<trans-unit datatype="html" id="a842d4536fdee499a55c753c50810254347ced32"> </trans-unit>
<source>编辑</source> <trans-unit datatype="html" id="08254f4ac965519b9a0befb43fd82bd6fa72a7af">
<target>Edit</target> <source>删除</source>
<target>Delete</target>
</trans-unit>
<trans-unit datatype="html" id="08254f4ac965519b9a0befb43fd82bd6fa72a7af"> </trans-unit>
<source>删除</source> <trans-unit datatype="html" id="a9f9a37033c904e50f9920798cf02b0f3ccd8270">
<target>Delete</target> <source>刷新</source>
<target>Refresh</target>
</trans-unit>
<trans-unit datatype="html" id="a9f9a37033c904e50f9920798cf02b0f3ccd8270"> </trans-unit>
<source>刷新</source> <trans-unit datatype="html" id="86738bd5d32223ffbb690a7c71360ddf8e7b1b2e">
<target>Refresh</target> <source>竞技匹配</source>
<target>Ranked Match</target>
</trans-unit>
<trans-unit datatype="html" id="86738bd5d32223ffbb690a7c71360ddf8e7b1b2e"> </trans-unit>
<source>竞技匹配</source> <trans-unit datatype="html" id="37869c115276c5df476f1f5aae75c099ffb35b59">
<target>Ranked Match</target> <source>取消等待</source>
<target>Cancel</target>
</trans-unit>
<trans-unit datatype="html" id="37869c115276c5df476f1f5aae75c099ffb35b59"> </trans-unit>
<source>取消等待</source> <trans-unit datatype="html" id="0bf938a69dc640aba46428d1cbbd2fef34c88daa">
<target>Cancel</target> <source>娱乐匹配</source>
<target>Unranked Match</target>
</trans-unit>
<trans-unit datatype="html" id="0bf938a69dc640aba46428d1cbbd2fef34c88daa"> </trans-unit>
<source>娱乐匹配</source> <trans-unit datatype="html" id="19923836b1ae79614782426a7a001d8ccfa27b5c">
<target>Unranked Match</target> <source>创建房间</source>
<target>Custom Game</target>
</trans-unit>
<trans-unit datatype="html" id="19923836b1ae79614782426a7a001d8ccfa27b5c"> </trans-unit>
<source>创建房间</source> <trans-unit datatype="html" id="c54a3c40a2766446dd03b0af75f64055aa404855">
<target>Custom Game</target> <source>房间列表</source>
<target>Game List</target>
</trans-unit>
<trans-unit datatype="html" id="c54a3c40a2766446dd03b0af75f64055aa404855"> </trans-unit>
<source>房间列表</source> <trans-unit datatype="html" id="3768b60a7e2625bb1fc2db37eb8c6b8e4bd99101">
<target>Game List</target> <source>单人模式</source>
<target>Single Mode</target>
</trans-unit>
<trans-unit datatype="html" id="3768b60a7e2625bb1fc2db37eb8c6b8e4bd99101"> </trans-unit>
<source>单人模式</source> <trans-unit datatype="html" id="1e64bb9c96dfc2b9cb03179dd0c9f992e0645e5f">
<target>Single Mode</target> <source>选择对手</source>
<target>Select Opponent</target>
</trans-unit>
<trans-unit datatype="html" id="1e64bb9c96dfc2b9cb03179dd0c9f992e0645e5f"> </trans-unit>
<source>选择对手</source> <trans-unit datatype="html" id="e35d1bf7c735e8df55a62046cd2d9f820bf5bffd">
<target>Select Opponent</target> <source>游戏标题</source>
<target>Title</target>
</trans-unit>
<trans-unit datatype="html" id="f6f3be110e7043e3cfe71a7bd75b8b3be79bff5d"> </trans-unit>
<source>取消</source> <trans-unit datatype="html" id="4b911deaa4defd0803635012281f3dd1112aabd1">
<target>Cancel</target> <source>卡片允许</source>
<target>Rule</target>
</trans-unit>
<trans-unit datatype="html" id="e35d1bf7c735e8df55a62046cd2d9f820bf5bffd"> </trans-unit>
<source>游戏标题</source> <trans-unit datatype="html" id="93d3b6bb4f3a66efd8c49f9063f6c8d6a9e959bf">
<target>Title</target> <source>OCG</source>
<target>OCG</target>
</trans-unit>
<trans-unit datatype="html" id="4b911deaa4defd0803635012281f3dd1112aabd1"> </trans-unit>
<source>卡片允许</source> <trans-unit datatype="html" id="150cb34526cf737163beb63ab76e4809ac1367dd">
<target>Rule</target> <source>TCG</source>
<target>TCG</target>
</trans-unit>
<trans-unit datatype="html" id="93d3b6bb4f3a66efd8c49f9063f6c8d6a9e959bf"> </trans-unit>
<source>OCG</source> <trans-unit datatype="html" id="be6d109c359b1d11b261280915e6b1706ca3ed9b">
<target>OCG</target> <source>OCG &amp; TCG</source>
<target>TCG/OCG</target>
</trans-unit>
<trans-unit datatype="html" id="150cb34526cf737163beb63ab76e4809ac1367dd"> </trans-unit>
<source>TCG</source> <trans-unit datatype="html" id="2a3f48f9ea5e6aae92e249ac2b279dbc07a6127d">
<target>TCG</target> <source>专有卡禁止</source>
<target>Unspecified</target>
</trans-unit>
<trans-unit datatype="html" id="be6d109c359b1d11b261280915e6b1706ca3ed9b"> </trans-unit>
<source>OCG &amp; TCG</source> <trans-unit datatype="html" id="d62a2717a0381d996785271c61177711777ba63c">
<target>TCG/OCG</target> <source>决斗模式</source>
<target>Duel mode</target>
</trans-unit>
<trans-unit datatype="html" id="2a3f48f9ea5e6aae92e249ac2b279dbc07a6127d"> </trans-unit>
<source>专有卡禁止</source> <trans-unit datatype="html" id="e436a4a0da03320dc61ba35bfab390ab85a23d0c">
<target>Unspecified</target> <source>单局模式</source>
<target>Single Duel</target>
</trans-unit>
<trans-unit datatype="html" id="d62a2717a0381d996785271c61177711777ba63c"> </trans-unit>
<source>决斗模式</source> <trans-unit datatype="html" id="2cf71acc936cf244cc5862b28efe461e91cb137d">
<target>Duel mode</target> <source>比赛模式</source>
<target>Match</target>
</trans-unit>
<trans-unit datatype="html" id="e436a4a0da03320dc61ba35bfab390ab85a23d0c"> </trans-unit>
<source>单局模式</source> <trans-unit datatype="html" id="c2ed31e132c305b995382adce0f95ccdabadaa21">
<target>Single Duel</target> <source>TAG</source>
<target>TAG</target>
</trans-unit>
<trans-unit datatype="html" id="2cf71acc936cf244cc5862b28efe461e91cb137d"> </trans-unit>
<source>比赛模式</source> <trans-unit datatype="html" id="d4038dd5d0e9d5139d425fc7bea40e40d965cc5b">
<target>Match</target> <source>额外选项</source>
<target>Additional Options</target>
</trans-unit>
<trans-unit datatype="html" id="c2ed31e132c305b995382adce0f95ccdabadaa21"> </trans-unit>
<source>TAG</source> <trans-unit datatype="html" id="01cfbee3f1d69f5adae299b7b8c8d75034aef53b">
<target>TAG</target> <source>初始 LP</source>
<target>Starting LP</target>
</trans-unit>
<trans-unit datatype="html" id="d4038dd5d0e9d5139d425fc7bea40e40d965cc5b"> </trans-unit>
<source>额外选项</source> <trans-unit datatype="html" id="0d72e50857f1d2504e08f7886d4c9d35a46e3ed9">
<target>Additional Options</target> <source>初始手牌数</source>
<target>Starting Hand</target>
</trans-unit>
<trans-unit datatype="html" id="01cfbee3f1d69f5adae299b7b8c8d75034aef53b"> </trans-unit>
<source>初始 LP</source> <trans-unit datatype="html" id="88cc5676c5322fd55c1df94ab487359100e6f9dd">
<target>Starting LP</target> <source>每回合抽卡</source>
<target>Draw per Turn</target>
</trans-unit>
<trans-unit datatype="html" id="0d72e50857f1d2504e08f7886d4c9d35a46e3ed9"> </trans-unit>
<source>初始手牌数</source> <trans-unit datatype="html" id="e405d8c7feb2bed82f3f0667657fa4ab668ae015">
<target>Starting Hand</target> <source>允许启动效果优先权</source>
<target>Ignition Priority</target>
</trans-unit>
<trans-unit datatype="html" id="88cc5676c5322fd55c1df94ab487359100e6f9dd"> </trans-unit>
<source>每回合抽卡</source> <trans-unit datatype="html" id="6e7470ddf4c35f6fab39b6ebeadb1780701a5469">
<target>Draw per Turn</target> <source>不检查卡组</source>
<target>Don't check</target>
</trans-unit>
<trans-unit datatype="html" id="e405d8c7feb2bed82f3f0667657fa4ab668ae015"> </trans-unit>
<source>允许启动效果优先权</source> <trans-unit datatype="html" id="0320acff078b039f2220bb385586cd2e24392bbb">
<target>Effect priority during Summon</target> <source>开局不洗卡组</source>
<target>Don't shuffle</target>
</trans-unit>
<trans-unit datatype="html" id="6e7470ddf4c35f6fab39b6ebeadb1780701a5469"> </trans-unit>
<source>不检查卡组</source> <trans-unit datatype="html" id="c17e9385db80e1881f37dda25d109b115a2843b3">
<target>Don't check</target> <source>查看房间</source>
<target>View rooms</target>
</trans-unit>
<trans-unit datatype="html" id="0320acff078b039f2220bb385586cd2e24392bbb"> </trans-unit>
<source>开局不洗卡组</source> <trans-unit datatype="html" id="f8ae23b4314929573cf0e815ccc12d70486dd74f">
<target>Don't shuffle</target> <source>创建</source>
<target>Create</target>
</trans-unit>
<trans-unit datatype="html" id="c17e9385db80e1881f37dda25d109b115a2843b3"> </trans-unit>
<source>查看房间</source> <trans-unit datatype="html" id="3872a823a98042e4730861ab6f9344239d9deeb6">
<target>View rooms</target> <source>玩家</source>
<target>Player</target>
</trans-unit>
<trans-unit datatype="html" id="f8ae23b4314929573cf0e815ccc12d70486dd74f"> </trans-unit>
<source>创建</source> <trans-unit datatype="html" id="4baa1360b4d635000fc5e14a6e7376f46ace0bd9">
<target>Create</target> <source><x id="INTERPOLATION"/> LP</source>
<target><x id="INTERPOLATION"/> LP</target>
</trans-unit>
<trans-unit datatype="html" id="3872a823a98042e4730861ab6f9344239d9deeb6"> </trans-unit>
<source>玩家</source> <trans-unit datatype="html" id="1939517ea2b4ff337ce2847302fbcc6f1217d269">
<target>Player</target> <source><x id="INTERPOLATION"/> 初始</source>
<target><x id="INTERPOLATION"/> Starting</target>
</trans-unit>
<trans-unit datatype="html" id="4baa1360b4d635000fc5e14a6e7376f46ace0bd9"> </trans-unit>
<source> <trans-unit datatype="html" id="a19d6d5a2c74d9df73936a17b5c71b2069051b49">
<x id="INTERPOLATION"/> <source><x id="INTERPOLATION"/> 抽卡</source>
LP <target><x id="INTERPOLATION"/> Draw</target>
</source>
<target> </trans-unit>
<x id="INTERPOLATION"/> <trans-unit datatype="html" id="be32d8fb22f36c3b2c1530e91f2ca07d108c8abe">
LP <source>优先权</source>
</target> <target>Priority</target>
</trans-unit> </trans-unit>
<trans-unit datatype="html" id="1939517ea2b4ff337ce2847302fbcc6f1217d269"> <trans-unit datatype="html" id="b5be173f96718dfa737f1da31d9ffab5b803561e">
<source> <source>不检查</source>
<x id="INTERPOLATION"/> <target>Don't check</target>
初始
</source> </trans-unit>
<target> <trans-unit datatype="html" id="517c8b6e5361bc32d7458a1e8b2bdbf09abb6f01">
<x id="INTERPOLATION"/> <source>不洗卡</source>
Starting <target>Don't shuffle</target>
</target>
</trans-unit>
</trans-unit> </body>
<trans-unit datatype="html" id="a19d6d5a2c74d9df73936a17b5c71b2069051b49"> </file>
<source>
<x id="INTERPOLATION"/>
抽卡
</source>
<target>
<x id="INTERPOLATION"/>
Draw
</target>
</trans-unit>
<trans-unit datatype="html" id="be32d8fb22f36c3b2c1530e91f2ca07d108c8abe">
<source>优先权</source>
<target>Priority</target>
</trans-unit>
<trans-unit datatype="html" id="b5be173f96718dfa737f1da31d9ffab5b803561e">
<source>不检查</source>
<target>Don't check</target>
</trans-unit>
<trans-unit datatype="html" id="517c8b6e5361bc32d7458a1e8b2bdbf09abb6f01">
<source>不洗卡</source>
<target>Don't shuffle</target>
</trans-unit>
</body>
</file>
</xliff> </xliff>
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment