Compare commits

..

15 Commits

Author SHA1 Message Date
JustArchi
dc06abc035 Translations update 2019-01-07 18:11:57 +01:00
JustArchi
434445857b Translations update 2019-01-07 17:10:30 +01:00
JustArchi
10b70921e1 Bump ArchiCrowdin 2019-01-07 17:08:28 +01:00
dependabot[bot]
7920a4c09c Bump tools/ArchiCrowdin from 0e2b8e2 to f8270d7
Bumps [tools/ArchiCrowdin](https://github.com/JustArchiNET/ArchiCrowdin) from `0e2b8e2` to `f8270d7`.
- [Release notes](https://github.com/JustArchiNET/ArchiCrowdin/releases)
- [Commits](0e2b8e22de...f8270d72a0)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2019-01-07 15:25:47 +00:00
dependabot[bot]
f8785c896a Bump ASF-ui from f5521ae to 6b1d8d3
Bumps [ASF-ui](https://github.com/JustArchiNET/ASF-ui) from `f5521ae` to `6b1d8d3`.
- [Release notes](https://github.com/JustArchiNET/ASF-ui/releases)
- [Commits](f5521aee83...6b1d8d3b03)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2019-01-07 15:12:42 +00:00
dependabot[bot]
213104c45d Bump NLog.Web.AspNetCore from 4.7.0 to 4.7.1
Bumps [NLog.Web.AspNetCore](https://github.com/NLog/NLog.Web) from 4.7.0 to 4.7.1.
- [Release notes](https://github.com/NLog/NLog.Web/releases)
- [Changelog](https://github.com/NLog/NLog.Web/blob/master/CHANGELOG.MD)
- [Commits](https://github.com/NLog/NLog.Web/commits)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2019-01-07 15:02:07 +00:00
dependabot[bot]
5f7cb0ba42 Bump ASF-ui from db18643 to f5521ae
Bumps [ASF-ui](https://github.com/JustArchiNET/ASF-ui) from `db18643` to `f5521ae`.
- [Release notes](https://github.com/JustArchiNET/ASF-ui/releases)
- [Commits](db1864395f...f5521aee83)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2019-01-07 08:50:22 +00:00
dependabot[bot]
d984a50e27 Bump ASF-WebConfigGenerator from da14b68 to 4b26780
Bumps [ASF-WebConfigGenerator](https://github.com/JustArchiNET/ASF-WebConfigGenerator) from `da14b68` to `4b26780`.
- [Release notes](https://github.com/JustArchiNET/ASF-WebConfigGenerator/releases)
- [Commits](da14b68a7e...4b267807b4)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2019-01-07 08:42:22 +00:00
JustArchi
cf63065681 Implement redirection RFC in WebBrowser 2019-01-06 19:20:24 +01:00
JustArchi
5ed94be076 Misc 2019-01-05 12:14:08 +01:00
JustArchi
e330a7146e Bump 2019-01-04 18:53:14 +01:00
JustArchi
ac1dd261ff Misc 2019-01-04 15:49:16 +01:00
JustArchi
9810461c74 Closes #1007 2019-01-04 15:46:31 +01:00
dependabot[bot]
1b6718b545 Bump wiki from 64d7e1f to e2b8b8d
Bumps [wiki](https://github.com/JustArchiNET/ArchiSteamFarm.wiki) from `64d7e1f` to `e2b8b8d`.
- [Release notes](https://github.com/JustArchiNET/ArchiSteamFarm.wiki/releases)
- [Commits](64d7e1f430...e2b8b8dd42)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2019-01-04 07:00:48 +00:00
JustArchi
abcd8da446 Bump 2019-01-03 22:27:50 +01:00
12 changed files with 140 additions and 100 deletions

2
ASF-ui

Submodule ASF-ui updated: db1864395f...0581398b1c

View File

@@ -522,6 +522,7 @@ limitations under the License.</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/PredefinedNamingRules/=PrivateConstants/@EntryIndexedValue">&lt;Policy Inspect="True" Prefix="" Suffix="" Style="AaBb"&gt;&lt;ExtraRule Prefix="I" Suffix="" Style="AaBb" /&gt;&lt;/Policy&gt;</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/PredefinedNamingRules/=PrivateInstanceFields/@EntryIndexedValue">&lt;Policy Inspect="True" Prefix="" Suffix="" Style="AaBb"&gt;&lt;ExtraRule Prefix="_" Suffix="" Style="AaBb" /&gt;&lt;ExtraRule Prefix="_" Suffix="" Style="aaBb" /&gt;&lt;/Policy&gt;</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/PredefinedNamingRules/=PrivateStaticFields/@EntryIndexedValue">&lt;Policy Inspect="True" Prefix="" Suffix="" Style="AaBb"&gt;&lt;ExtraRule Prefix="_" Suffix="" Style="AaBb" /&gt;&lt;ExtraRule Prefix="_" Suffix="" Style="aaBb" /&gt;&lt;/Policy&gt;</s:String>
<s:Boolean x:Key="/Default/Environment/ParameterNameHintsOptions/ShowParameterNameHints/@EntryValue">False</s:Boolean>
<s:String x:Key="/Default/Environment/PerformanceGuide/SwitchBehaviour/=AutoRecoverer/@EntryIndexedValue">LIVE_MONITOR</s:String>
<s:String x:Key="/Default/Environment/PerformanceGuide/SwitchBehaviour/=Format/@EntryIndexedValue">LIVE_MONITOR</s:String>
<s:String x:Key="/Default/Environment/PerformanceGuide/SwitchBehaviour/=LSL/@EntryIndexedValue">LIVE_MONITOR</s:String>
@@ -547,6 +548,7 @@ limitations under the License.</s:String>
<s:Boolean x:Key="/Default/Environment/SettingsMigration/IsMigratorApplied/=JetBrains_002EReSharper_002EPsi_002ECSharp_002ECodeStyle_002ECSharpPlaceAttributeOnSameLineMigration/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/Environment/SettingsMigration/IsMigratorApplied/=JetBrains_002EReSharper_002EPsi_002ECSharp_002ECodeStyle_002ECSharpPlaceEmbeddedOnSameLineMigration/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/Environment/SettingsMigration/IsMigratorApplied/=JetBrains_002EReSharper_002EPsi_002ECSharp_002ECodeStyle_002ECSharpRenamePlacementToArrangementMigration/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/Environment/SettingsMigration/IsMigratorApplied/=JetBrains_002EReSharper_002EPsi_002ECSharp_002ECodeStyle_002ECSharpUseContinuousIndentInsideBracesMigration/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/Environment/SettingsMigration/IsMigratorApplied/=JetBrains_002EReSharper_002EPsi_002ECSharp_002ECodeStyle_002ESettingsUpgrade_002EAddAccessorOwnerDeclarationBracesMigration/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/Environment/SettingsMigration/IsMigratorApplied/=JetBrains_002EReSharper_002EPsi_002ECSharp_002ECodeStyle_002ESettingsUpgrade_002EAlwaysTreatStructAsNotReorderableMigration/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/Environment/SettingsMigration/IsMigratorApplied/=JetBrains_002EReSharper_002EPsi_002ECSharp_002ECodeStyle_002ESettingsUpgrade_002ECSharpPlaceAttributeOnSameLineMigration/@EntryIndexedValue">True</s:Boolean>

View File

@@ -2,7 +2,7 @@
<PropertyGroup>
<ApplicationIcon>ASF.ico</ApplicationIcon>
<AssemblyVersion>3.4.2.0</AssemblyVersion>
<AssemblyVersion>3.4.2.2</AssemblyVersion>
<Authors>JustArchi</Authors>
<Company>JustArchi</Company>
<ConcurrentGarbageCollection>true</ConcurrentGarbageCollection>
@@ -10,7 +10,7 @@
<DefaultItemExcludes>$(DefaultItemExcludes);debug/**;out/**</DefaultItemExcludes>
<Description>ASF is an application that allows you to farm steam cards using multiple steam accounts simultaneously.</Description>
<ErrorReport>none</ErrorReport>
<FileVersion>3.4.2.0</FileVersion>
<FileVersion>3.4.2.2</FileVersion>
<GenerateDocumentationFile>true</GenerateDocumentationFile>
<LangVersion>latest</LangVersion>
<NoWarn>1591</NoWarn>
@@ -54,7 +54,7 @@
<PackageReference Include="Microsoft.Win32.Registry" Version="4.6.0-preview.18571.3" />
<PackageReference Include="Newtonsoft.Json" Version="12.0.1" />
<PackageReference Include="NLog" Version="4.5.11" />
<PackageReference Include="NLog.Web.AspNetCore" Version="4.7.0" />
<PackageReference Include="NLog.Web.AspNetCore" Version="4.7.1" />
<PackageReference Include="protobuf-net" Version="3.0.0-alpha.3" />
<PackageReference Include="Swashbuckle.AspNetCore" Version="5.0.0-beta" />
<PackageReference Include="Swashbuckle.AspNetCore.Annotations" Version="5.0.0-beta" />

View File

@@ -1623,9 +1623,12 @@ namespace ArchiSteamFarm {
return FormatBotResponse(string.Format(Strings.ErrorIsEmpty, nameof(BotConfig.DecryptedSteamPassword)));
}
string response = FormatBotResponse(string.Format(Strings.BotEncryptedPassword, ArchiCryptoHelper.ECryptoMethod.AES, ArchiCryptoHelper.Encrypt(ArchiCryptoHelper.ECryptoMethod.AES, Bot.BotConfig.DecryptedSteamPassword))) + FormatBotResponse(string.Format(Strings.BotEncryptedPassword, ArchiCryptoHelper.ECryptoMethod.ProtectedDataForCurrentUser, ArchiCryptoHelper.Encrypt(ArchiCryptoHelper.ECryptoMethod.ProtectedDataForCurrentUser, Bot.BotConfig.DecryptedSteamPassword)));
Dictionary<ArchiCryptoHelper.ECryptoMethod, string> encryptedPasswords = new Dictionary<ArchiCryptoHelper.ECryptoMethod, string>(2) {
{ ArchiCryptoHelper.ECryptoMethod.AES, ArchiCryptoHelper.Encrypt(ArchiCryptoHelper.ECryptoMethod.AES, Bot.BotConfig.DecryptedSteamPassword) },
{ ArchiCryptoHelper.ECryptoMethod.ProtectedDataForCurrentUser, ArchiCryptoHelper.Encrypt(ArchiCryptoHelper.ECryptoMethod.ProtectedDataForCurrentUser, Bot.BotConfig.DecryptedSteamPassword) }
};
return response;
return FormatBotResponse(string.Join(", ", encryptedPasswords.Where(kv => !string.IsNullOrEmpty(kv.Value)).Select(kv => string.Format(Strings.BotEncryptedPassword, kv.Key, kv.Value))));
}
private static async Task<string> ResponsePassword(ulong steamID, string botNames) {

View File

@@ -661,7 +661,7 @@ StackTrace:
<comment>{0} will be replaced by bot's level</comment>
</data>
<data name="ActivelyMatchingItems" xml:space="preserve">
<value>Vergleich der Steam-Gegenstände, Durchgang #{0}...</value>
<value>Vergleiche Steam-Gegenstände, Durchgang #{0}...</value>
<comment>{0} will be replaced by round number</comment>
</data>
<data name="DoneActivelyMatchingItems" xml:space="preserve">
@@ -672,11 +672,11 @@ StackTrace:
<value>Abgebrochen!</value>
</data>
<data name="ActivelyMatchingItemsRound" xml:space="preserve">
<value>Übereinstimmende Anzahl von {0} Set(s) in diesem Durchgang.</value>
<value>Insgesamt wurden in diesem Durchgang {0} Set(s) abgeglichen.</value>
<comment>{0} will be replaced by number of sets traded</comment>
</data>
<data name="WarningExcessiveBotsCount" xml:space="preserve">
<value>Bei dir laufen mehr private Bot-Konten als unser höchster, empfohlender Grenzwert von ({0}). Beachte, dass diese Konfiguration nicht unterstützt wird und verschiedene Steam bezogene Probleme verursachen kann, einschließlich Kontosperrungen. Für weitere Details schaue dir das FAQ an.</value>
<value>Du verwendest mehr persönliche Bot-Konten als unsere empfohlene Obergrenze ({0}). Bitte bedenke, dass dieses Setup nicht unterstützt wird und verschiedene Steam-bezogene Probleme verursachen kann, einschließlich Kontosperrungen. Weitere Informationen findest du in den FAQs.</value>
<comment>{0} will be replaced by our maximum recommended bots count (number)</comment>
</data>
</root>

View File

@@ -138,18 +138,20 @@
<comment>{0} will be replaced by version number</comment>
</data>
<data name="ErrorEarlyFatalExceptionPrint" xml:space="preserve">
<value>例外錯誤 {0}() {1} 堆疊追蹤:{2}</value>
<value>例外錯誤{0}() {1}
堆疊追蹤:
{2}</value>
<comment>{0} will be replaced by function name, {1} will be replaced by exception message, {2} will be replaced by entire stack trace. Please note that this string should include newlines for formatting.</comment>
</data>
<data name="ErrorExitingWithNonZeroErrorCode" xml:space="preserve">
<value>正在退出並伴隨著非零的錯誤代碼!</value>
<value>正在以非 0 錯誤代碼退出</value>
</data>
<data name="ErrorFailingRequest" xml:space="preserve">
<value>請求失敗︰ {0}</value>
<comment>{0} will be replaced by URL of the request</comment>
</data>
<data name="ErrorGlobalConfigNotLoaded" xml:space="preserve">
<value>全域設置無法載入,請確保 {0} 存在並且是有效路徑!如果仍有疑惑,請參 wiki 上的設定指南。</value>
<value>全域設置無法載入,請確保 {0} 存在且有效!如果仍有問題,請參 wiki 中的新手上路指南。</value>
<comment>{0} will be replaced by file's path</comment>
</data>
<data name="ErrorIsInvalid" xml:space="preserve">
@@ -157,17 +159,17 @@
<comment>{0} will be replaced by object's name</comment>
</data>
<data name="ErrorMobileAuthenticatorInvalidDeviceID" xml:space="preserve">
<value>ASF 二階段驗證中設定的 DeviceID 無效,該功能無法執行!</value>
<value>ASF 雙重驗證中設定的 DeviceID 無效,該功能無法執行!</value>
</data>
<data name="ErrorNoBotsDefined" xml:space="preserve">
<value>沒有設定 BOT 帳號,您忘了設定 ASF 了嗎?</value>
<value>沒有設定任何 BOT。你忘記設定 ASF 了嗎?</value>
</data>
<data name="ErrorObjectIsNull" xml:space="preserve">
<value>{0} 為空值!</value>
<comment>{0} will be replaced by object's name</comment>
</data>
<data name="ErrorParsingObject" xml:space="preserve">
<value>析 {0} 失敗 </value>
<value>析 {0} 失敗!</value>
<comment>{0} will be replaced by object's name</comment>
</data>
<data name="ErrorRequestFailedTooManyTimes" xml:space="preserve">
@@ -178,13 +180,13 @@
<value>無法檢查最新版本!</value>
</data>
<data name="ErrorUpdateNoAssetForThisVersion" xml:space="preserve">
<value>無法更新因為前執行的版本沒有可用的更新檔,程式並未更新到最新版本。</value>
<value>無法進行更新因為沒有與目前執行的版本相關的資源文件!無法自動更新到版本。</value>
</data>
<data name="ErrorUpdateNoAssets" xml:space="preserve">
<value>無法進行更新,該版本更新檔不存在</value>
<value>無法進行更新,因為此版本沒有提供任何資源文件</value>
</data>
<data name="ErrorUserInputRunningInHeadlessMode" xml:space="preserve">
<value>收到一個使用者輸入請求,但程序已在無標頭模式下運行!</value>
<value>收到一個使用者輸入請求,但程序目前正以無標頭模式行!</value>
</data>
<data name="Exiting" xml:space="preserve">
<value>正在退出...</value>
@@ -193,13 +195,13 @@
<value>失敗!</value>
</data>
<data name="GlobalConfigChanged" xml:space="preserve">
<value>已更改全域設定檔 </value>
<value>已更改全域設定檔!</value>
</data>
<data name="ErrorGlobalConfigRemoved" xml:space="preserve">
<value>全域設定檔已被刪除 </value>
<value>全域設定檔已被刪除!</value>
</data>
<data name="IgnoringTrade" xml:space="preserve">
<value>忽略交易 {0}</value>
<value>忽略交易{0}</value>
<comment>{0} will be replaced by trade number</comment>
</data>
<data name="LoggingIn" xml:space="preserve">
@@ -207,7 +209,7 @@
<comment>{0} will be replaced by service's name</comment>
</data>
<data name="NoBotsAreRunning" xml:space="preserve">
<value>沒有 BOT 正在運行,即將退出...</value>
<value>沒有執行中的 BOT正在退出...</value>
</data>
<data name="RefreshingOurSession" xml:space="preserve">
<value>更新工作階段 </value>
@@ -239,26 +241,26 @@
<value>更新完成 </value>
</data>
<data name="UpdateNewVersionAvailable" xml:space="preserve">
<value>ASF 有新版本可用 !請手動更新 </value>
<value>ASF 有新版本可用!請考慮手動更新!</value>
</data>
<data name="UpdateVersionInfo" xml:space="preserve">
<value>目前版本: {0} | 最新版本: {1}</value>
<value>目前版本{0} | 最新版本{1}</value>
<comment>{0} will be replaced by current version, {1} will be replaced by remote version</comment>
</data>
<data name="UserInputDeviceID" xml:space="preserve">
<value>請輸入您的裝置識別碼 (包括 "android:"): </value>
<value>請輸入你的行動驗證器裝置識別碼 (包括 "android:") </value>
<comment>Please note that this translation should end with space</comment>
</data>
<data name="UserInputSteam2FA" xml:space="preserve">
<value>請輸入您 Steam Guard 行動驗證器上的代碼: </value>
<value>請輸入您 Steam Guard 行動驗證器上的雙重驗證代碼: </value>
<comment>Please note that this translation should end with space</comment>
</data>
<data name="UserInputSteamGuard" xml:space="preserve">
<value>請輸入寄送至您 E-mail 的 Steam Guard 代碼:</value>
<value>請輸入寄送至您電子信箱的 Steam Guard 驗證代碼: </value>
<comment>Please note that this translation should end with space</comment>
</data>
<data name="UserInputSteamLogin" xml:space="preserve">
<value>請輸入的 Steam 帳號: </value>
<value>請輸入的 Steam 帳號: </value>
<comment>Please note that this translation should end with space</comment>
</data>
<data name="UserInputSteamParentalCode" xml:space="preserve">
@@ -274,7 +276,7 @@
<comment>{0} will be replaced by property name. Please note that this translation should end with space</comment>
</data>
<data name="WarningUnknownValuePleaseReport" xml:space="preserve">
<value>收到未知的值為 {0},請回報此問題︰ {1}</value>
<value>收到 {0} 的未知值,請回報:{1}</value>
<comment>{0} will be replaced by object's name, {1} will be replaced by value for that object</comment>
</data>
<data name="IPCReady" xml:space="preserve">
@@ -287,11 +289,11 @@
<value>這個 BOT 已經停止了!</value>
</data>
<data name="BotNotFound" xml:space="preserve">
<value>找不到任何名為 {0} 的帳號</value>
<value>找不到任何名為 {0} 的 BOT</value>
<comment>{0} will be replaced by bot's name query (string)</comment>
</data>
<data name="BotStatusOverview" xml:space="preserve">
<value>{0}/{1} 個 BOT 正在運行,總共有 {2} 個遊戲 ({3} 張卡片) 等待掛卡。</value>
<value>{0}/{1} 個 BOT 執行中,共 {2} 個遊戲 ({3} 張卡片) 等待掛卡。</value>
<comment>{0} will be replaced by number of active bots, {1} will be replaced by total number of bots, {2} will be replaced by total number of games left to idle, {3} will be replaced by total number of cards left to idle</comment>
</data>
<data name="BotStatusIdling" xml:space="preserve">
@@ -299,7 +301,7 @@
<comment>{0} will be replaced by game's ID (number), {1} will be replaced by game's name, {2} will be replaced by number of cards left to idle, {3} will be replaced by total number of games to idle, {4} will be replaced by total number of cards to idle, {5} will be replaced by translated TimeSpan string (such as "1 day, 5 hours and 30 minutes")</comment>
</data>
<data name="BotStatusIdlingList" xml:space="preserve">
<value>BOT 正在掛卡的遊戲:{0}總共有 {1} 個遊戲 ({2} 張卡片) 等待掛卡 (剩餘約 {3})。</value>
<value>BOT 正在掛卡的遊戲:{0} {1} 個遊戲 ({2} 張卡片) 等待掛卡 (需時約 {3})。</value>
<comment>{0} will be replaced by list of the games (IDs, numbers), {1} will be replaced by total number of games to idle, {2} will be replaced by total number of cards to idle, {3} will be replaced by translated TimeSpan string (such as "1 day, 5 hours and 30 minutes")</comment>
</data>
<data name="CheckingFirstBadgePage" xml:space="preserve">
@@ -316,14 +318,14 @@
<value>已完成!</value>
</data>
<data name="GamesToIdle" xml:space="preserve">
<value>總共有 {0} 個遊戲 (總數 {1} 張卡片) 需要掛卡 (剩餘 {2})...</value>
<value> {0} 個遊戲 ({1} 張卡片) 等待掛卡 (需時約 {2})...</value>
<comment>{0} will be replaced by number of games, {1} will be replaced by number of cards, {2} will be replaced by translated TimeSpan string (such as "1 day, 5 hours and 30 minutes")</comment>
</data>
<data name="IdlingFinished" xml:space="preserve">
<value>完成掛卡!</value>
</data>
<data name="IdlingFinishedForGame" xml:space="preserve">
<value>完成掛卡:{0} ({1})共耗時 {2}</value>
<value>完成掛卡:{0} ({1}),共耗時 {2}</value>
<comment>{0} will be replaced by game's ID (number), {1} will be replaced by game's name, {2} will be replaced by translated TimeSpan string (such as "1 day, 5 hours and 30 minutes")</comment>
</data>
<data name="IdlingFinishedForGames" xml:space="preserve">
@@ -338,36 +340,36 @@
<value>已停止掛卡!</value>
</data>
<data name="IgnoredPermanentPauseEnabled" xml:space="preserve">
<value>無法完成這項要求,因為強制暫停已啟用!</value>
<value>正在忽略此請求,因為強制暫停已啟用!</value>
</data>
<data name="NothingToIdle" xml:space="preserve">
<value>這個帳戶已經沒有任何卡片可以掉落</value>
<value>這個帳戶目前沒有需要掛卡的遊戲</value>
</data>
<data name="NowIdling" xml:space="preserve">
<value>正在掛卡: {0} ({1})</value>
<value>正在掛卡{0} ({1})</value>
<comment>{0} will be replaced by game's ID (number), {1} will be replaced by game's name</comment>
</data>
<data name="NowIdlingList" xml:space="preserve">
<value>正在掛卡 {0}</value>
<value>正在掛卡{0}</value>
<comment>{0} will be replaced by list of the games (IDs, numbers), separated by a comma</comment>
</data>
<data name="PlayingNotAvailable" xml:space="preserve">
<value>前無法執行,我們稍後再試 </value>
<value>前無法執行,我們稍後再試!</value>
</data>
<data name="StillIdling" xml:space="preserve">
<value>仍在掛卡: {0} ({1})</value>
<value>仍在掛卡{0} ({1})</value>
<comment>{0} will be replaced by game's ID (number), {1} will be replaced by game's name</comment>
</data>
<data name="StillIdlingList" xml:space="preserve">
<value>仍在掛卡: {0}</value>
<value>仍在掛卡{0}</value>
<comment>{0} will be replaced by list of the games (IDs, numbers), separated by a comma</comment>
</data>
<data name="StoppedIdling" xml:space="preserve">
<value>停止掛卡: {0} ({1})</value>
<value>停止掛卡{0} ({1})</value>
<comment>{0} will be replaced by game's ID (number), {1} will be replaced by game's name</comment>
</data>
<data name="StoppedIdlingList" xml:space="preserve">
<value>停止掛卡: {0}</value>
<value>停止掛卡{0}</value>
<comment>{0} will be replaced by list of the games (IDs, numbers), separated by a comma</comment>
</data>
<data name="UnknownCommand" xml:space="preserve">
@@ -377,38 +379,38 @@
<value>無法取得徽章頁資訊,我們將稍後再試!</value>
</data>
<data name="WarningCouldNotCheckCardsStatus" xml:space="preserve">
<value>無法檢查卡片狀態{0} ({1}),將稍後再試 </value>
<value>無法檢查卡片狀態{0} ({1})我們將稍後再試!</value>
<comment>{0} will be replaced by game's ID (number), {1} will be replaced by game's name</comment>
</data>
<data name="BotAcceptingGift" xml:space="preserve">
<value>接受禮物{0}...</value>
<value>接受禮物{0}...</value>
<comment>{0} will be replaced by giftID (number)</comment>
</data>
<data name="BotAccountLimited" xml:space="preserve">
<value>這個帳戶是受限制的帳戶,在限制解除前將無法掛卡!</value>
</data>
<data name="BotAddLicense" xml:space="preserve">
<value>ID: {0} | 狀態: {1}</value>
<value>ID{0} | 狀態{1}</value>
<comment>{0} will be replaced by game's ID (number), {1} will be replaced by status string</comment>
</data>
<data name="BotAddLicenseWithItems" xml:space="preserve">
<value>ID: {0} | 狀態: {1} | 物品: {2}</value>
<value>ID{0} | 狀態{1} | 物品{2}</value>
<comment>{0} will be replaced by game's ID (number), {1} will be replaced by status string, {2} will be replaced by list of granted IDs (numbers), separated by a comma</comment>
</data>
<data name="BotAlreadyRunning" xml:space="preserve">
<value>BOT 已在行中!</value>
<value>BOT 已在行中!</value>
</data>
<data name="BotAuthenticatorConverting" xml:space="preserve">
<value>正在將 .maFile 轉成 ASF 的文件格式...</value>
<value>正在將 .maFile 轉成 ASF 的文件格式...</value>
</data>
<data name="BotAuthenticatorImportFinished" xml:space="preserve">
<value>已成功入行動驗證器 </value>
<value>已成功入行動驗證器 </value>
</data>
<data name="BotAuthenticatorInvalidDeviceID" xml:space="preserve">
<value>的 DeviceID 不正確或不存在!</value>
<value>的 DeviceID 不正確或不存在!</value>
</data>
<data name="BotAuthenticatorToken" xml:space="preserve">
<value>二階段驗證代碼:{0}</value>
<value>雙重驗證代碼:{0}</value>
<comment>{0} will be replaced by generated 2FA token (string)</comment>
</data>
<data name="BotAutomaticIdlingNowPaused" xml:space="preserve">
@@ -437,10 +439,10 @@
<comment>{0} will be replaced by password encryption method (string), {1} will be replaced by encrypted password using that method (string)</comment>
</data>
<data name="BotInstanceNotStartingBecauseDisabled" xml:space="preserve">
<value>無法啟動這個帳號,因為它在設定檔中被禁用!</value>
<value>這個 BOT 將不會啟動,因為它在設定檔中被禁用!</value>
</data>
<data name="BotInvalidAuthenticatorDuringLogin" xml:space="preserve">
<value>已連續收到 {0} 次 TwoFactorCodeMismatch 錯誤訊息。可能是你的 2FA 憑證不再有效,或時鐘不同步,正在中止!</value>
<value>已連續收到 {0} 次 TwoFactorCodeMismatch 錯誤訊息。你的雙重驗證憑證可能已失效,或時鐘不同步,正在中止!</value>
<comment>{0} will be replaced by maximum allowed number of failed 2FA attempts</comment>
</data>
<data name="BotLoggedOff" xml:space="preserve">
@@ -467,13 +469,13 @@
<value>交易提案發送成功!</value>
</data>
<data name="BotSendingTradeToYourself" xml:space="preserve">
<value>無法發送交易給自己!</value>
<value>無法發送交易給自己!</value>
</data>
<data name="BotNoASFAuthenticator" xml:space="preserve">
<value>這個 BOT 並未啟用 ASF 二階段驗證!您是否忘記將二階段驗證導入至 ASF</value>
<value>BOT 並未啟用 ASF 雙重驗證!您是否忘記將驗證器匯入成 ASF 雙重驗證</value>
</data>
<data name="BotNotConnected" xml:space="preserve">
<value>這個帳號還沒有進行連線!</value>
<value>此 BOT 實例尚未連線!</value>
</data>
<data name="BotNotOwnedYet" xml:space="preserve">
<value>未擁有:{0}</value>
@@ -484,7 +486,7 @@
<comment>{0} will be replaced by game's ID (number), {1} will be replaced by game's name</comment>
</data>
<data name="BotRateLimitExceeded" xml:space="preserve">
<value>頻率超過限制,將在 {0} 後重試...</value>
<value>超過頻率限制,我們將在 {0} 後重試...</value>
<comment>{0} will be replaced by translated TimeSpan string (such as "25 minutes")</comment>
</data>
<data name="BotReconnecting" xml:space="preserve">
@@ -499,28 +501,28 @@
<comment>{0} will be replaced by cd-key (string), {1} will be replaced by status string, {2} will be replaced by list of key-value pairs, separated by a comma</comment>
</data>
<data name="BotRemovedExpiredLoginKey" xml:space="preserve">
<value>已刪除了過期的登錄金鑰!</value>
<value>已移除過期的登錄金鑰!</value>
</data>
<data name="BotStatusNotIdling" xml:space="preserve">
<value>BOT 目前沒有在掛卡。</value>
</data>
<data name="BotStatusLimited" xml:space="preserve">
<value>BOT 的帳號是受限制的,所以無法通過掛卡得到卡片。</value>
<value>BOT 為受限帳戶,所以無法通過掛卡得到卡片。</value>
</data>
<data name="BotStatusConnecting" xml:space="preserve">
<value>BOT 帳號正在連到 Steam 網路。</value>
<value>BOT 正在連到 Steam 網路。</value>
</data>
<data name="BotStatusNotRunning" xml:space="preserve">
<value>BOT 未行。</value>
<value>BOT 未行。</value>
</data>
<data name="BotStatusPaused" xml:space="preserve">
<value>BOT 已暫停或正手動模式執行。</value>
<value>BOT 已暫停或正手動模式執行。</value>
</data>
<data name="BotStatusPlayingNotAvailable" xml:space="preserve">
<value>BOT 目前正被使用。</value>
<value>BOT 使用。</value>
</data>
<data name="BotUnableToLogin" xml:space="preserve">
<value>無法登入到 Steam{0}/{1}</value>
<value>無法登入到 Steam{0}/{1}</value>
<comment>{0} will be replaced by failure reason (string), {1} will be replaced by extended failure reason (string)</comment>
</data>
<data name="ErrorIsEmpty" xml:space="preserve">
@@ -528,27 +530,27 @@
<comment>{0} will be replaced by object's name</comment>
</data>
<data name="UnusedKeys" xml:space="preserve">
<value>未使用的產品序號{0}</value>
<value>未使用的產品序號{0}</value>
<comment>{0} will be replaced by list of cd-keys (strings), separated by a comma</comment>
</data>
<data name="WarningFailedWithError" xml:space="preserve">
<value>發生錯誤而失敗,原因︰{0}</value>
<value>發生錯誤而失敗{0}</value>
<comment>{0} will be replaced by failure reason (string)</comment>
</data>
<data name="BotConnectionLost" xml:space="preserve">
<value>與 Steam 網路的連線中斷,正在重新進行連線...</value>
<value>與 Steam 網路的連線中斷,正在重新連線...</value>
</data>
<data name="BotAccountFree" xml:space="preserve">
<value>帳戶不再被佔用,已恢復掛卡!</value>
</data>
<data name="BotAccountOccupied" xml:space="preserve">
<value>帳號目前正被使用ASF 在該帳號空閒時繼續掛卡...</value>
<value>帳號目前使用ASF 在該帳號空閒時繼續掛卡...</value>
</data>
<data name="BotConnecting" xml:space="preserve">
<value>正在連線...</value>
</data>
<data name="BotHeartBeatFailed" xml:space="preserve">
<value>無法與用戶端終止連線,止此 BOT 帳號</value>
<value>無法與用戶端中斷連線,正在中止此 BOT 實例</value>
</data>
<data name="BotSteamDirectoryInitializationFailed" xml:space="preserve">
<value>無法初始化 SteamDirectory與 Steam 網路的連線可能需要更長的時間!</value>
@@ -561,7 +563,7 @@
<comment>{0} will be replaced by file's path</comment>
</data>
<data name="ErrorDatabaseInvalid" xml:space="preserve">
<value>無法載入存續式資料庫,如果問題仍然存在,請刪除 {0} 以重新創建資料庫!</value>
<value>無法載入存資料庫,如果問題仍然存在,請刪除 {0} 以重建資料庫!</value>
<comment>{0} will be replaced by file's path</comment>
</data>
<data name="Initializing" xml:space="preserve">
@@ -569,24 +571,24 @@
<comment>{0} will be replaced by service name that is being initialized</comment>
</data>
<data name="WarningPrivacyPolicy" xml:space="preserve">
<value>如果您對 ASF 的實際運作方式有疑慮,請我們 wiki 上的隱私政策章節中查看</value>
<value>如果您對 ASF 的實際運作方式有疑慮,請查看我們 wiki 上的隱私政策章節!</value>
</data>
<data name="Welcome" xml:space="preserve">
<value>看來這是你首次使用 ASF歡迎</value>
</data>
<data name="ErrorInvalidCurrentCulture" xml:space="preserve">
<value>您提供的 CurrentCulture 無效ASF 將以預設值繼續行!</value>
<value>您提供的 CurrentCulture 無效ASF 將以預設值繼續行!</value>
</data>
<data name="TranslationIncomplete" xml:space="preserve">
<value>ASF 將使用的偏好語系 {0},但該語言的翻譯只完成了 {1}。請協助我們改善 ASF 的翻譯品質。</value>
<value>ASF 將使用的偏好語系 {0},但該語言的翻譯只完成了 {1}。請協助我們改善 ASF 的翻譯品質。</value>
<comment>{0} will be replaced by culture code, such as "en-US", {1} will be replaced by completeness percentage, such as "78.5%"</comment>
</data>
<data name="IdlingGameNotPossible" xml:space="preserve">
<value>{0} ({1}) 的掛卡暫時ASF 目前無法掛這個遊戲的卡。</value>
<value>{0} ({1}) 的掛卡暫時用,因為 ASF 目前無法執行該遊戲。</value>
<comment>{0} will be replaced by game's ID (number), {1} will be replaced by game's name</comment>
</data>
<data name="WarningIdlingGameMismatch" xml:space="preserve">
<value>ASF 測到 ID {0} ({1}) 不匹配並且將改為使用 ID {2}。</value>
<value>ASF 測到 {0} ({1}) 的 ID 不相符,且將改為使用 ID {2}。</value>
<comment>{0} will be replaced by game's ID (number), {1} will be replaced by game's name, {2} will be replaced by game's ID (number)</comment>
</data>
<data name="BotVersion" xml:space="preserve">
@@ -594,10 +596,10 @@
<comment>{0} will be replaced by program's name (e.g. "ASF"), {1} will be replaced by program's version (e.g. "1.0.0.0"). This string typically has nothing to translate and you should leave it as it is, unless you need to change the format, e.g. in RTL languages.</comment>
</data>
<data name="BotAccountLocked" xml:space="preserve">
<value>此帳戶被鎖定,掛卡程序永久無法使用 </value>
<value>此帳戶被鎖定,永久無法掛卡 </value>
</data>
<data name="BotStatusLocked" xml:space="preserve">
<value>BOT 的帳號已被鎖定,無法透過掛卡得到卡片。</value>
<value>BOT 已被鎖定,無法透過掛卡得到卡片。</value>
</data>
<data name="ErrorFunctionOnlyInHeadlessMode" xml:space="preserve">
<value>此功能僅能在無標頭模式下使用!</value>
@@ -607,7 +609,7 @@
<comment>{0} will be replaced by game's ID (number), {1} will be replaced by game's name</comment>
</data>
<data name="ErrorAccessDenied" xml:space="preserve">
<value>拒絕存取!</value>
<value>存取被拒</value>
</data>
<data name="WarningPreReleaseVersion" xml:space="preserve">
<value>您目前使用的版本高於最新的穩定版本。請注意:預覽版本是專門給了解如何回報錯誤、處理問題並提供回饋的使用者,並不提供任何技術支援。</value>
@@ -617,7 +619,7 @@
<comment>{0} will be replaced by number (in megabytes) of memory being used</comment>
</data>
<data name="ClearingDiscoveryQueue" xml:space="preserve">
<value>正在執行 Steam 探索佇列 #{0}...</value>
<value>正在瀏覽 Steam 探索佇列 #{0}...</value>
<comment>{0} will be replaced by queue number</comment>
</data>
<data name="DoneClearingDiscoveryQueue" xml:space="preserve">
@@ -625,7 +627,7 @@
<comment>{0} will be replaced by queue number</comment>
</data>
<data name="BotOwnsOverviewPerGame" xml:space="preserve">
<value>{0}/{1} bot 已經擁有遊戲 {2}。</value>
<value>{0}/{1} 個 BOT 已經擁有遊戲 {2}。</value>
<comment>{0} will be replaced by number of bots that already own particular game being checked, {1} will be replaced by total number of bots that were checked during the process, {2} will be replaced by game's ID (number)</comment>
</data>
<data name="BotRefreshingPackagesData" xml:space="preserve">
@@ -636,7 +638,7 @@
<comment>{0} will be replaced by the name of deprecated property (such as argument, config property or likewise), {1} will be replaced by the name of valid replacement (such as another argument or config property)</comment>
</data>
<data name="BotAcceptedDonationTrade" xml:space="preserve">
<value>接受捐贈交易: {0}</value>
<value>接受捐贈交易{0}</value>
<comment>{0} will be replaced by trade's ID (number)</comment>
</data>
<data name="WarningWorkaroundTriggered" xml:space="preserve">
@@ -644,19 +646,36 @@
<comment>{0} will be replaced by the bug's name provided by ASF</comment>
</data>
<data name="TargetBotNotConnected" xml:space="preserve">
<value>目標 BOT 實例未連</value>
<value>目標 BOT 實例未連</value>
</data>
<data name="BotWalletBalance" xml:space="preserve">
<value>錢包平衡{0} {1}</value>
<value>錢包餘額{0} {1}</value>
<comment>{0} will be replaced by wallet balance value, {1} will be replaced by currency name</comment>
</data>
<data name="BotHasNoWallet" xml:space="preserve">
<value>Bot 沒有錢包餘額。</value>
<value>BOT 無錢包餘額。</value>
</data>
<data name="BotLevel" xml:space="preserve">
<value>BOT 的等級為 {0}。</value>
<comment>{0} will be replaced by bot's level</comment>
</data>
<data name="ActivelyMatchingItems" xml:space="preserve">
<value>正在對應 Steam 物品,第 #{0} 輪...</value>
<comment>{0} will be replaced by round number</comment>
</data>
<data name="DoneActivelyMatchingItems" xml:space="preserve">
<value>已完成對應 Steam 物品,第 #{0} 輪。</value>
<comment>{0} will be replaced by round number</comment>
</data>
<data name="ErrorAborted" xml:space="preserve">
<value>已中止!</value>
</data>
<data name="ActivelyMatchingItemsRound" xml:space="preserve">
<value>此輪共對應 {0} 套物品。</value>
<comment>{0} will be replaced by number of sets traded</comment>
</data>
<data name="WarningExcessiveBotsCount" xml:space="preserve">
<value>你執行的個人 BOT 帳戶數量超過我們的建議上限 ({0})。請留意,此配置不受支援,且可能會導致各種 Steam 相關問題,包括帳戶停權。請參閱常見問答了解詳情。</value>
<comment>{0} will be replaced by our maximum recommended bots count (number)</comment>
</data>
</root>

View File

@@ -288,13 +288,14 @@ namespace ArchiSteamFarm {
// If we ever need to correct this, we also need to clean up other places
const string deviceIdentifier = "android:";
if (!deviceID.StartsWith(deviceIdentifier, StringComparison.Ordinal) || (deviceID.Length != deviceIdentifier.Length + 36)) {
if (!deviceID.StartsWith(deviceIdentifier, StringComparison.Ordinal) || (deviceID.Length <= deviceIdentifier.Length)) {
return false;
}
// Dashes are optional in the ID, strip them off for comparison
string hash = deviceID.Substring(deviceIdentifier.Length).Replace("-", "");
return (hash.Length == 32) && Utilities.IsValidHexadecimalString(hash);
return (hash.Length > 0) && Utilities.IsValidHexadecimalString(hash);
}
private string GenerateConfirmationHash(uint time, string tag = null) {

View File

@@ -505,6 +505,20 @@ namespace ArchiSteamFarm {
redirectUri = new Uri(requestUri.GetLeftPart(UriPartial.Authority) + redirectUri);
}
// According to the RFC, POST requests in certain types of redirection must be converted into GET
if (httpMethod == HttpMethod.Post) {
switch (response.StatusCode) {
case HttpStatusCode.Found:
case HttpStatusCode.Moved:
case HttpStatusCode.MultipleChoices:
case HttpStatusCode.SeeOther:
httpMethod = HttpMethod.Get;
data = null;
break;
}
}
response.Dispose();
return await InternalRequest(redirectUri, httpMethod, data, referer, httpCompletionOption, --maxRedirections).ConfigureAwait(false);

View File

@@ -30,10 +30,11 @@ try {
throw "$crowdinIdentityPath could not be found, aborting."
}
& "$archiCrowdinScriptPath" -t:$archiTargets -d -c -p
& "$archiCrowdinScriptPath" -d -p
& "$archiCrowdinScriptPath" -t:wiki -c -p
& "$archiCrowdinScriptPath" -c -p
& "$archiCrowdinScriptPath" -t:$archiTargets -d -c -p # Download and commit all independent submodules that are part of ASF project
& "$archiCrowdinScriptPath" -t:wiki -c -p # Wiki submodule depends on us, we do this one more time before in order to ensure that tree is up-to-date (e.g. branch is master before we start modifying files in the next step)
& "$archiCrowdinScriptPath" -d -p -rs:no # Download translations for the main project, which also includes wiki submodule as of now
& "$archiCrowdinScriptPath" -t:wiki -c -p # Commit the wiki submodule that we updated in the previous step
& "$archiCrowdinScriptPath" -c # Commit the main project and references of all submodules
} finally {
Pop-Location
}

2
wiki

Submodule wiki updated: 64d7e1f430...52f8aadca0