Compare commits

..

64 Commits

Author SHA1 Message Date
JustArchi
cf6929e3ab Translations update 2017-03-16 07:32:13 +01:00
JustArchi
b1445bc68a Extra-ordinary bump
due to !api breaking-change
2017-03-16 07:29:18 +01:00
JustArchi
66b31b4b4d Fix compilation on Mono stable 2017-03-15 14:31:51 +01:00
JustArchi
85e2d967bb Translations update 2017-03-15 14:25:09 +01:00
JustArchi
ee0feb5de4 Correct !api <Bots> permission 2017-03-15 14:11:35 +01:00
JustArchi
0dbf892a84 !api without <Bots> result in current bot instance now
Same like every other command, !api ASF exists for older behaviour
2017-03-15 14:09:02 +01:00
JustArchi
4543656109 Exclude masters with ID of 0 2017-03-15 13:07:49 +01:00
JustArchi
50e944cc0c Improve translations 2017-03-15 12:20:52 +01:00
JustArchi
0f345dd3e8 Misc 2017-03-15 12:05:58 +01:00
JustArchi
502adbcc2e Make !rejoinchat follow <Bots> syntax 2017-03-15 12:05:36 +01:00
JustArchi
39a8d9c8a2 SteamUserPermissions revolution
This is needed for defining multiple operators and/or masters, as well as eventual further enhancements
2017-03-15 11:56:20 +01:00
JustArchi
8980667620 Misc 2017-03-15 08:34:21 +01:00
JustArchi
9f1df5de80 Assert on invalid json being saved 2017-03-15 08:33:38 +01:00
Łukasz Domeradzki
7ebc134ba0 Merge pull request #500 from TheSergiooo/master
Added SteamOperatorID property
2017-03-14 15:52:44 +01:00
TheSergiooo
3be60fc638 Added SteamOperatorID 2017-03-14 08:22:50 +03:00
TheSergiooo
9a9f7390f7 ConfigGenerator fix 2017-03-14 08:18:31 +03:00
TheSergiooo
d96aada47a DisallowNull fix 2017-03-14 08:16:05 +03:00
TheSergiooo
79c813025d DisallowNull fix 2017-03-14 08:15:00 +03:00
TheSergiooo
0261877600 Added SteamOperatorID property 2017-03-14 07:04:34 +03:00
JustArchi
6c8a123b68 Automatically invalidate old broken trades before sending new one 2017-03-13 09:40:08 +01:00
JustArchi
3a1fcb57f3 Bump 2017-03-13 07:20:34 +01:00
JustArchi
4d32970917 Translations update 2017-03-13 07:15:56 +01:00
JustArchi
dd4541ff73 Fix ILRepack compilation step on OS X also for weekly mono 2017-03-13 03:15:51 +01:00
JustArchi
9e52d3fb78 Fix ILRepack compilation step on OS X 2017-03-13 03:01:04 +01:00
JustArchi
631cd2d2aa Travis: another test 2017-03-13 02:48:18 +01:00
JustArchi
151e59cf41 Travis: another test 2017-03-13 02:33:40 +01:00
JustArchi
100c56fb7e Travis: new config test 2017-03-13 02:29:02 +01:00
JustArchi
024931027f Misc + missing type 2017-03-13 01:49:40 +01:00
JustArchi
d455b3704d Closes #485 2017-03-13 01:46:11 +01:00
JustArchi
5b87b605f6 Closes #497 2017-03-13 01:24:20 +01:00
JustArchi
a2ee2b792d Improve ArchiWebHandler Init
Instead of returning nothing on error, wait a specified timeout for becoming ready.
Also move entire AWH-readyness to private.
2017-03-12 08:05:46 +01:00
JustArchi
ac65f40f18 Misc 2017-03-12 07:41:22 +01:00
JustArchi
9b2380fdf9 Run API calls in their own tasks
Those SK2 calls are synchronous after all, and they might affect responsiveness negatively when a single bot is executing many of them.
This is once again not a problem of ASF, as here we can have like 1-2 concurrent API calls, but ArchiBoT suffered from this a lot.
2017-03-12 07:40:22 +01:00
JustArchi
7864a86324 crowdin-cli 2.0.11 2017-03-11 17:31:25 +01:00
JustArchi
f2552950a8 Translations update 2017-03-11 17:30:45 +01:00
JustArchi
aa43b311c5 Rewrite language detection to be even more reliable
http://stackoverflow.com/questions/42598732/reliable-calculation-of-overriden-culture-specific-resources-in-net
2017-03-11 17:05:39 +01:00
JustArchi
6ca331b74f Misc badges update 2017-03-11 01:18:01 +01:00
JustArchi
20cca18805 AppVeyor: VS15 -> VS17 2017-03-10 21:54:24 +01:00
JustArchi
30ad9fb8da Bump 2017-03-09 21:39:25 +01:00
JustArchi
799fd85a3a Translations update 2017-03-09 21:36:56 +01:00
JustArchi
6d774224f0 Add missing type 2017-03-09 01:23:53 +01:00
JustArchi
b30d7d30f5 Bump 2017-03-08 04:42:27 +01:00
JustArchi
12fa8d2015 Translation update 2017-03-08 04:40:46 +01:00
JustArchi
807ef2d83a Prevent Windows from going to sleep only in headless mode 2017-03-07 03:47:56 +01:00
JustArchi
758a9868ca Bump 2017-03-06 21:33:25 +01:00
JustArchi
fe8b562dc6 Bump 2017-03-06 21:33:03 +01:00
JustArchi
a35b5a4d1a Change default !pause to be sticky
non-sticky pause is !pause~ now
2017-03-06 21:25:58 +01:00
JustArchi
63df2ba4aa Translations update 2017-03-06 21:07:10 +01:00
JustArchi
9656a2c167 Closes #490 2017-03-06 01:09:52 +01:00
JustArchi
50732f2864 Misc 2017-03-05 19:02:45 +01:00
JustArchi
6bb97b1342 Playing delay improvements 2017-03-05 18:39:44 +01:00
JustArchi
fa520b8202 Revert "ToRevert: Extra debug"
This reverts commit 1fe3fcdfd4.
2017-03-05 18:14:51 +01:00
JustArchi
1fe3fcdfd4 ToRevert: Extra debug 2017-03-05 17:54:07 +01:00
JustArchi
4c6e9113d2 Closes #489 2017-03-05 17:41:57 +01:00
JustArchi
a53cb95645 Bump 2017-03-05 16:59:43 +01:00
JustArchi
8cf0249c00 Translations update 2017-03-05 16:52:20 +01:00
JustArchi
efaa53313d Misc 2017-03-05 16:52:15 +01:00
JustArchi
f6d0bd9e9c Closes #486
Further tests might be needed
2017-03-05 16:51:14 +01:00
JustArchi
409f538794 Closes #488 2017-03-04 22:12:00 +01:00
JustArchi
f3313658f1 Bump 2017-03-03 13:32:18 +01:00
JustArchi
b8d12d37ba crowdin-cli 2.0.9 -> 2.0.10 2017-03-03 13:30:25 +01:00
JustArchi
2a6de461a8 Misc .NET 4.6 optimization 2017-03-03 13:25:34 +01:00
JustArchi
d9a7a1dcf9 Don't initialize SteamDirectory when we have > 0 servers saved 2017-03-03 13:23:56 +01:00
JustArchi
8f0f480b17 Bump 2017-03-02 22:30:54 +01:00
79 changed files with 3704 additions and 1239 deletions

View File

@@ -1,18 +1,7 @@
# ASF is a C# project with solution named ArchiSteamFarm.sln
language: csharp
solution: ArchiSteamFarm.sln
# We're fine building ASF in container-based environment
# Explicitly state that sudo is not needed, even if it's default option
sudo: false
# Default Travis container-based environment is currently Ubuntu 12.04
# It'd be best to build ASF on latest Linux OS available, but that's not possible
# Therefore, we build ASF on latest available OS, currently: Ubuntu 14.04
# Please bump me as new OSes arrive!
# https://docs.travis-ci.com/user/ci-environment/#Virtualization-environments
# TODO: Temporarily disabled, as it's not 100% stable yet.
#dist: trusty
# Save bandwidth by limiting git clone to only last 10 commits
git:
depth: 10
@@ -21,27 +10,38 @@ git:
# Sadly Travis doesn't support AppVeyor's "skip_branch_with_pr"
branches:
only:
- master
- master
# We test ASF on latest stable and nightly versions of Mono
mono:
- weekly
# - alpha
# - beta
- latest
# Mono is often broken, we might need to enable/disable allowing failures on as-needed basis
# Currently we allow all Mono builds to fail, sadly it's the only way to not get crazy over various random SIGABRTs
# Ref: https://travis-ci.org/JustArchi/ArchiSteamFarm/jobs/192428388#L2007-L2009
# This is our main build matrix
matrix:
# We can use fast finish, as we don't need to wait for all builds to mark it as failed/passed
fast_finish: true
allow_failures:
- mono: weekly
# - mono: alpha
# - mono: beta
- mono: latest
# Mono is often broken, we might need to enable/disable allowing failures on as-needed basis
# Currently we allow all Mono builds to fail, as it has serious problems, such as random SIGABRTs
# This is decent because it allows us to track Mono builds and fix ASF if needed, while not going crazy over false alarms
# Ref: https://travis-ci.org/JustArchi/ArchiSteamFarm/jobs/192428388#L2007-L2009
- os: linux
- os: osx
include:
# We're building ASF with Mono on latest versions of Linux and OS X
# Ref: https://docs.travis-ci.com/user/ci-environment/#Virtualization-environments
- os: linux
dist: trusty
sudo: false
mono: weekly
- os: linux
dist: trusty
sudo: false
mono: latest
- os: osx
osx_image: xcode8.2
mono: weekly
- os: osx
osx_image: xcode8.2
mono: latest
# Initialize our envsetup before building
# Initialize our envsetup before building, we're adding some extra environment properties there
before_script:
- source mono_envsetup.sh

View File

@@ -154,14 +154,6 @@ namespace ArchiSteamFarm {
Client.Send(logon);
}
internal void PlayGame(uint gameID, string gameName = null) {
if (!Client.IsConnected) {
return;
}
PlayGames(gameID.ToEnumerable(), gameName);
}
internal void PlayGames(IEnumerable<uint> gameIDs, string gameName = null) {
if (gameIDs == null) {
ArchiLogger.LogNullError(nameof(gameIDs));

View File

@@ -208,6 +208,7 @@
<EmbeddedResource Include="Localization\Strings.el-GR.resx" />
<EmbeddedResource Include="Localization\Strings.es-ES.resx" />
<EmbeddedResource Include="Localization\Strings.fi-FI.resx" />
<EmbeddedResource Include="Localization\Strings.fr-CH.resx" />
<EmbeddedResource Include="Localization\Strings.fr-FR.resx" />
<EmbeddedResource Include="Localization\Strings.he-IL.resx" />
<EmbeddedResource Include="Localization\Strings.hi-IN.resx" />
@@ -226,6 +227,7 @@
<EmbeddedResource Include="Localization\Strings.pt-PT.resx" />
<EmbeddedResource Include="Localization\Strings.ro-RO.resx" />
<EmbeddedResource Include="Localization\Strings.ru-RU.resx" />
<EmbeddedResource Include="Localization\Strings.sk-SK.resx" />
<EmbeddedResource Include="Localization\Strings.sr-CS.resx" />
<EmbeddedResource Include="Localization\Strings.sr-SP.resx" />
<EmbeddedResource Include="Localization\Strings.sv-SE.resx" />

View File

@@ -63,8 +63,6 @@ namespace ArchiSteamFarm {
private readonly SemaphoreSlim SteamApiKeySemaphore = new SemaphoreSlim(1);
private readonly WebBrowser WebBrowser;
internal bool Ready { get; private set; }
private bool? CachedPublicInventory;
private string CachedSteamApiKey;
private DateTime LastSessionRefreshCheck = DateTime.MinValue;
@@ -92,7 +90,7 @@ namespace ArchiSteamFarm {
return false;
}
if (!Ready || !await RefreshSessionIfNeeded().ConfigureAwait(false)) {
if (!await RefreshSessionIfNeeded().ConfigureAwait(false)) {
return false;
}
@@ -120,7 +118,7 @@ namespace ArchiSteamFarm {
return false;
}
if (!Ready || !await RefreshSessionIfNeeded().ConfigureAwait(false)) {
if (!await RefreshSessionIfNeeded().ConfigureAwait(false)) {
return false;
}
@@ -148,7 +146,7 @@ namespace ArchiSteamFarm {
return false;
}
if (!Ready || !await RefreshSessionIfNeeded().ConfigureAwait(false)) {
if (!await RefreshSessionIfNeeded().ConfigureAwait(false)) {
return false;
}
@@ -181,19 +179,21 @@ namespace ArchiSteamFarm {
KeyValue response = null;
for (byte i = 0; (i < WebBrowser.MaxRetries) && (response == null); i++) {
using (dynamic iEconService = WebAPI.GetInterface(IEconService, steamApiKey)) {
iEconService.Timeout = Timeout;
await Task.Run(() => {
using (dynamic iEconService = WebAPI.GetInterface(IEconService, steamApiKey)) {
iEconService.Timeout = Timeout;
try {
response = iEconService.DeclineTradeOffer(
tradeofferid: tradeID.ToString(),
method: WebRequestMethods.Http.Post,
secure: true
);
} catch (Exception e) {
Bot.ArchiLogger.LogGenericWarningException(e);
try {
response = iEconService.DeclineTradeOffer(
tradeofferid: tradeID.ToString(),
method: WebRequestMethods.Http.Post,
secure: true
);
} catch (Exception e) {
Bot.ArchiLogger.LogGenericWarningException(e);
}
}
}
}).ConfigureAwait(false);
}
if (response == null) {
@@ -203,7 +203,7 @@ namespace ArchiSteamFarm {
/*
internal async Task<HashSet<uint>> GenerateNewDiscoveryQueue() {
if (!Ready || !await RefreshSessionIfNeeded().ConfigureAwait(false)) {
if (!await RefreshSessionIfNeeded().ConfigureAwait(false)) {
return null;
}
@@ -232,20 +232,22 @@ namespace ArchiSteamFarm {
KeyValue response = null;
for (byte i = 0; (i < WebBrowser.MaxRetries) && (response == null); i++) {
using (dynamic iEconService = WebAPI.GetInterface(IEconService, steamApiKey)) {
iEconService.Timeout = Timeout;
await Task.Run(() => {
using (dynamic iEconService = WebAPI.GetInterface(IEconService, steamApiKey)) {
iEconService.Timeout = Timeout;
try {
response = iEconService.GetTradeOffers(
get_received_offers: 1,
active_only: 1,
get_descriptions: 1,
secure: true
);
} catch (Exception e) {
Bot.ArchiLogger.LogGenericWarningException(e);
try {
response = iEconService.GetTradeOffers(
get_received_offers: 1,
active_only: 1,
get_descriptions: 1,
secure: true
);
} catch (Exception e) {
Bot.ArchiLogger.LogGenericWarningException(e);
}
}
}
}).ConfigureAwait(false);
}
if (response == null) {
@@ -340,7 +342,7 @@ namespace ArchiSteamFarm {
return null;
}
if (!Ready || !await RefreshSessionIfNeeded().ConfigureAwait(false)) {
if (!await RefreshSessionIfNeeded().ConfigureAwait(false)) {
return null;
}
@@ -354,7 +356,7 @@ namespace ArchiSteamFarm {
return null;
}
if (!Ready || !await RefreshSessionIfNeeded().ConfigureAwait(false)) {
if (!await RefreshSessionIfNeeded().ConfigureAwait(false)) {
return null;
}
@@ -375,7 +377,7 @@ namespace ArchiSteamFarm {
return null;
}
if (!Ready || !await RefreshSessionIfNeeded().ConfigureAwait(false)) {
if (!await RefreshSessionIfNeeded().ConfigureAwait(false)) {
return null;
}
@@ -385,7 +387,7 @@ namespace ArchiSteamFarm {
/*
internal async Task<HtmlDocument> GetDiscoveryQueuePage() {
if (!Ready || !await RefreshSessionIfNeeded().ConfigureAwait(false)) {
if (!await RefreshSessionIfNeeded().ConfigureAwait(false)) {
return null;
}
@@ -395,7 +397,7 @@ namespace ArchiSteamFarm {
*/
internal async Task<HashSet<ulong>> GetFamilySharingSteamIDs() {
if (!Ready || !await RefreshSessionIfNeeded().ConfigureAwait(false)) {
if (!await RefreshSessionIfNeeded().ConfigureAwait(false)) {
return null;
}
@@ -434,7 +436,7 @@ namespace ArchiSteamFarm {
return null;
}
if (!Ready || !await RefreshSessionIfNeeded().ConfigureAwait(false)) {
if (!await RefreshSessionIfNeeded().ConfigureAwait(false)) {
return null;
}
@@ -443,7 +445,7 @@ namespace ArchiSteamFarm {
}
internal async Task<Dictionary<uint, string>> GetMyOwnedGames() {
if (!Ready || !await RefreshSessionIfNeeded().ConfigureAwait(false)) {
if (!await RefreshSessionIfNeeded().ConfigureAwait(false)) {
return null;
}
@@ -488,7 +490,7 @@ namespace ArchiSteamFarm {
return null;
}
if (!Ready || !await RefreshSessionIfNeeded().ConfigureAwait(false)) {
if (!await RefreshSessionIfNeeded().ConfigureAwait(false)) {
return null;
}
@@ -620,19 +622,21 @@ namespace ArchiSteamFarm {
KeyValue response = null;
for (byte i = 0; (i < WebBrowser.MaxRetries) && (response == null); i++) {
using (dynamic iPlayerService = WebAPI.GetInterface(IPlayerService, steamApiKey)) {
iPlayerService.Timeout = Timeout;
await Task.Run(() => {
using (dynamic iPlayerService = WebAPI.GetInterface(IPlayerService, steamApiKey)) {
iPlayerService.Timeout = Timeout;
try {
response = iPlayerService.GetOwnedGames(
steamid: steamID,
include_appinfo: 1,
secure: true
);
} catch (Exception e) {
Bot.ArchiLogger.LogGenericWarningException(e);
try {
response = iPlayerService.GetOwnedGames(
steamid: steamID,
include_appinfo: 1,
secure: true
);
} catch (Exception e) {
Bot.ArchiLogger.LogGenericWarningException(e);
}
}
}
}).ConfigureAwait(false);
}
if (response == null) {
@@ -654,21 +658,23 @@ namespace ArchiSteamFarm {
return result;
}
internal uint GetServerTime() {
internal async Task<uint> GetServerTime() {
KeyValue response = null;
for (byte i = 0; (i < WebBrowser.MaxRetries) && (response == null); i++) {
using (dynamic iTwoFactorService = WebAPI.GetInterface(ITwoFactorService)) {
iTwoFactorService.Timeout = Timeout;
await Task.Run(() => {
using (dynamic iTwoFactorService = WebAPI.GetInterface(ITwoFactorService)) {
iTwoFactorService.Timeout = Timeout;
try {
response = iTwoFactorService.QueryTime(
method: WebRequestMethods.Http.Post,
secure: true
);
} catch (Exception e) {
Bot.ArchiLogger.LogGenericWarningException(e);
try {
response = iTwoFactorService.QueryTime(
method: WebRequestMethods.Http.Post,
secure: true
);
} catch (Exception e) {
Bot.ArchiLogger.LogGenericWarningException(e);
}
}
}
}).ConfigureAwait(false);
}
if (response != null) {
@@ -681,7 +687,7 @@ namespace ArchiSteamFarm {
/*
internal async Task<HtmlDocument> GetSteamAwardsPage() {
if (!Ready || !await RefreshSessionIfNeeded().ConfigureAwait(false)) {
if (!await RefreshSessionIfNeeded().ConfigureAwait(false)) {
return null;
}
@@ -696,7 +702,7 @@ namespace ArchiSteamFarm {
return null;
}
if (!Ready || !await RefreshSessionIfNeeded().ConfigureAwait(false)) {
if (!await RefreshSessionIfNeeded().ConfigureAwait(false)) {
return null;
}
@@ -747,7 +753,7 @@ namespace ArchiSteamFarm {
return null;
}
if (!Ready || !await RefreshSessionIfNeeded().ConfigureAwait(false)) {
if (!await RefreshSessionIfNeeded().ConfigureAwait(false)) {
return null;
}
@@ -763,7 +769,7 @@ namespace ArchiSteamFarm {
return null;
}
if (!Ready || !await RefreshSessionIfNeeded().ConfigureAwait(false)) {
if (!await RefreshSessionIfNeeded().ConfigureAwait(false)) {
return null;
}
@@ -845,26 +851,26 @@ namespace ArchiSteamFarm {
// Do the magic
Bot.ArchiLogger.LogGenericInfo(string.Format(Strings.LoggingIn, ISteamUserAuth));
KeyValue authResult;
using (dynamic iSteamUserAuth = WebAPI.GetInterface(ISteamUserAuth)) {
iSteamUserAuth.Timeout = Timeout;
KeyValue authResult = null;
await Task.Run(() => {
using (dynamic iSteamUserAuth = WebAPI.GetInterface(ISteamUserAuth)) {
iSteamUserAuth.Timeout = Timeout;
try {
authResult = iSteamUserAuth.AuthenticateUser(
steamid: steamID,
sessionkey: Encoding.ASCII.GetString(WebUtility.UrlEncodeToBytes(cryptedSessionKey, 0, cryptedSessionKey.Length)),
encrypted_loginkey: Encoding.ASCII.GetString(WebUtility.UrlEncodeToBytes(cryptedLoginKey, 0, cryptedLoginKey.Length)),
method: WebRequestMethods.Http.Post,
secure: true
);
} catch (Exception e) {
Bot.ArchiLogger.LogGenericWarningException(e);
return false;
try {
authResult = iSteamUserAuth.AuthenticateUser(
steamid: steamID,
sessionkey: Encoding.ASCII.GetString(WebUtility.UrlEncodeToBytes(cryptedSessionKey, 0, cryptedSessionKey.Length)),
encrypted_loginkey: Encoding.ASCII.GetString(WebUtility.UrlEncodeToBytes(cryptedLoginKey, 0, cryptedLoginKey.Length)),
method: WebRequestMethods.Http.Post,
secure: true
);
} catch (Exception e) {
Bot.ArchiLogger.LogGenericWarningException(e);
}
}
}
}).ConfigureAwait(false);
if (authResult == null) {
Bot.ArchiLogger.LogNullError(nameof(authResult));
return false;
}
@@ -898,7 +904,6 @@ namespace ArchiSteamFarm {
}
}
Ready = true;
LastSessionRefreshCheck = DateTime.UtcNow;
return true;
}
@@ -909,7 +914,7 @@ namespace ArchiSteamFarm {
return false;
}
if (!Ready || !await RefreshSessionIfNeeded().ConfigureAwait(false)) {
if (!await RefreshSessionIfNeeded().ConfigureAwait(false)) {
return false;
}
@@ -929,7 +934,7 @@ namespace ArchiSteamFarm {
}
internal async Task<bool> MarkInventory() {
if (!Ready || !await RefreshSessionIfNeeded().ConfigureAwait(false)) {
if (!await RefreshSessionIfNeeded().ConfigureAwait(false)) {
return false;
}
@@ -937,7 +942,16 @@ namespace ArchiSteamFarm {
return await WebBrowser.UrlHeadRetry(request).ConfigureAwait(false);
}
internal void OnDisconnected() => Ready = false;
internal async Task<bool> MarkSentTrades() {
if (!await RefreshSessionIfNeeded().ConfigureAwait(false)) {
return false;
}
const string request = SteamCommunityURL + "/my/tradeoffers/sent";
return await WebBrowser.UrlHeadRetry(request).ConfigureAwait(false);
}
internal void OnDisconnected() => SteamID = 0;
internal async Task<EPurchaseResultDetail> RedeemWalletKey(string key) {
if (string.IsNullOrEmpty(key)) {
@@ -945,7 +959,7 @@ namespace ArchiSteamFarm {
return EPurchaseResultDetail.Timeout;
}
if (!Ready || !await RefreshSessionIfNeeded().ConfigureAwait(false)) {
if (!await RefreshSessionIfNeeded().ConfigureAwait(false)) {
return EPurchaseResultDetail.Timeout;
}
@@ -964,7 +978,7 @@ namespace ArchiSteamFarm {
return false;
}
if (!Ready || !await RefreshSessionIfNeeded().ConfigureAwait(false)) {
if (!await RefreshSessionIfNeeded().ConfigureAwait(false)) {
return false;
}
@@ -1075,7 +1089,7 @@ namespace ArchiSteamFarm {
}
private async Task<Tuple<ESteamApiKeyState, string>> GetApiKeyState() {
if (!Ready || !await RefreshSessionIfNeeded().ConfigureAwait(false)) {
if (!await RefreshSessionIfNeeded().ConfigureAwait(false)) {
return null;
}
@@ -1147,7 +1161,7 @@ namespace ArchiSteamFarm {
return false;
}
if (!Ready || !await RefreshSessionIfNeeded().ConfigureAwait(false)) {
if (!await RefreshSessionIfNeeded().ConfigureAwait(false)) {
return false;
}
@@ -1212,7 +1226,7 @@ namespace ArchiSteamFarm {
}
private async Task<bool?> IsInventoryPublic() {
if (!Ready || !await RefreshSessionIfNeeded().ConfigureAwait(false)) {
if (!await RefreshSessionIfNeeded().ConfigureAwait(false)) {
return null;
}
@@ -1287,6 +1301,16 @@ namespace ArchiSteamFarm {
}
private async Task<bool> RefreshSessionIfNeeded() {
if (SteamID == 0) {
for (byte i = 0; (i < Program.GlobalConfig.ConnectionTimeout) && (SteamID == 0); i++) {
await Task.Delay(1000).ConfigureAwait(false);
}
if (SteamID == 0) {
return false;
}
}
if (DateTime.UtcNow.Subtract(LastSessionRefreshCheck).TotalSeconds < MinSessionTTL) {
return true;
}
@@ -1312,7 +1336,7 @@ namespace ArchiSteamFarm {
}
private async Task<bool> RegisterApiKey() {
if (!Ready || !await RefreshSessionIfNeeded().ConfigureAwait(false)) {
if (!await RefreshSessionIfNeeded().ConfigureAwait(false)) {
return false;
}

View File

@@ -28,6 +28,7 @@ using System.Collections.Generic;
using System.Diagnostics.CodeAnalysis;
using System.IO;
using System.Linq;
using System.Net;
using System.Security.Cryptography;
using System.Text;
using System.Text.RegularExpressions;
@@ -37,11 +38,12 @@ using ArchiSteamFarm.JSON;
using ArchiSteamFarm.Localization;
using Newtonsoft.Json;
using SteamKit2;
using SteamKit2.Discovery;
using SteamKit2.Internal;
namespace ArchiSteamFarm {
internal sealed class Bot : IDisposable {
internal const byte MinPlayingBlockedTTL = 60; // Delay in seconds added when account was occupied during our disconnect, to not disconnect other Steam client session too soon
private const ushort CallbackSleep = 500; // In miliseconds
private const byte FamilySharingInactivityMinutes = 5;
private const byte LoginCooldownInMinutes = 25; // Captcha disappears after around 20 minutes, so we make it 25
@@ -54,20 +56,19 @@ namespace ArchiSteamFarm {
private static readonly SemaphoreSlim GiftsSemaphore = new SemaphoreSlim(1);
private static readonly SemaphoreSlim LoginSemaphore = new SemaphoreSlim(1);
internal readonly ArchiHandler ArchiHandler;
internal readonly ArchiLogger ArchiLogger;
internal readonly ArchiWebHandler ArchiWebHandler;
internal readonly string BotName;
internal bool CanReceiveSteamCards => !IsAccountLimited && !IsAccountLocked;
internal bool HasMobileAuthenticator => BotDatabase?.MobileAuthenticator != null;
internal bool IsConnectedAndLoggedOn => (SteamClient?.IsConnected == true) && (SteamClient.SteamID != null);
internal bool IsConnectedAndLoggedOn => SteamID != 0;
internal bool IsPlayingPossible => !PlayingBlocked && (LibraryLockedBySteamID == 0);
[JsonProperty]
internal ulong SteamID => SteamClient?.SteamID ?? 0;
private readonly ArchiHandler ArchiHandler;
private readonly BotDatabase BotDatabase;
private readonly CallbackManager CallbackManager;
private readonly SemaphoreSlim CallbackSemaphore = new SemaphoreSlim(1);
@@ -100,6 +101,8 @@ namespace ArchiSteamFarm {
[JsonProperty]
internal bool KeepRunning { get; private set; }
internal bool PlayingWasBlocked { get; private set; }
[JsonProperty]
private EAccountFlags AccountFlags;
@@ -113,6 +116,7 @@ namespace ArchiSteamFarm {
private ulong LibraryLockedBySteamID;
private bool LootingAllowed = true;
private bool PlayingBlocked;
private Timer PlayingWasBlockedTimer;
private Timer SendItemsTimer;
private bool SkipFirstShutdown;
private string TwoFactorCode;
@@ -309,9 +313,14 @@ namespace ArchiSteamFarm {
return null;
}
internal static string GetAPIStatus() {
internal static string GetAPIStatus(IDictionary<string, Bot> bots) {
if (bots == null) {
ASF.ArchiLogger.LogNullError(nameof(bots));
return null;
}
var response = new {
Bots
Bots = bots
};
try {
@@ -377,6 +386,7 @@ namespace ArchiSteamFarm {
// We must convert this to uppercase, since Valve doesn't stick to any convention and we can have a case mismatch
switch (type.ToUpperInvariant()) {
// Types that can be idled
case "APPLICATION":
case "EPISODE":
case "GAME":
case "MOVIE":
@@ -426,7 +436,7 @@ namespace ArchiSteamFarm {
return appID;
}
internal static async Task InitializeCMs(uint cellID, IServerListProvider serverListProvider) {
internal static async Task InitializeCMs(uint cellID, InMemoryServerListProvider serverListProvider) {
if (serverListProvider == null) {
ASF.ArchiLogger.LogNullError(nameof(serverListProvider));
return;
@@ -435,24 +445,44 @@ namespace ArchiSteamFarm {
CMClient.Servers.CellID = cellID;
CMClient.Servers.ServerListProvider = serverListProvider;
// Normally we wouldn't need to do this, but there is a case where our list might be invalid or outdated
// Ensure that we always ask once for list of up-to-date servers, even if we have list saved
ASF.ArchiLogger.LogGenericInfo(string.Format(Strings.Initializing, nameof(SteamDirectory)));
// Ensure that we ask for a list of servers if we don't have any saved servers available
IEnumerable<IPEndPoint> servers = await serverListProvider.FetchServerListAsync().ConfigureAwait(false);
if (servers?.Any() != true) {
ASF.ArchiLogger.LogGenericInfo(string.Format(Strings.Initializing, nameof(SteamDirectory)));
try {
await SteamDirectory.Initialize(cellID).ConfigureAwait(false);
ASF.ArchiLogger.LogGenericInfo(Strings.Success);
} catch {
ASF.ArchiLogger.LogGenericWarning(Strings.BotSteamDirectoryInitializationFailed);
try {
await SteamDirectory.Initialize(cellID).ConfigureAwait(false);
ASF.ArchiLogger.LogGenericInfo(Strings.Success);
} catch {
ASF.ArchiLogger.LogGenericWarning(Strings.BotSteamDirectoryInitializationFailed);
}
}
}
internal bool IsMaster(ulong steamID) {
if (steamID == 0) {
ArchiLogger.LogNullError(nameof(steamID));
return false;
}
if (IsOwner(steamID)) {
return true;
}
return GetSteamUserPermission(steamID) >= BotConfig.EPermission.Master;
}
internal async Task LootIfNeeded() {
if (!BotConfig.SendOnFarmingFinished || (BotConfig.SteamMasterID == 0) || !IsConnectedAndLoggedOn || (BotConfig.SteamMasterID == SteamClient.SteamID)) {
if (!IsConnectedAndLoggedOn || !BotConfig.SendOnFarmingFinished) {
return;
}
await ResponseLoot(BotConfig.SteamMasterID).ConfigureAwait(false);
ulong steamMasterID = GetFirstSteamMasterID();
if (steamMasterID == 0) {
return;
}
await ResponseLoot(steamMasterID).ConfigureAwait(false);
}
internal async Task OnFarmingFinished(bool farmedSomething) {
@@ -506,6 +536,17 @@ namespace ArchiSteamFarm {
}
}
internal void PlayGame(uint gameID, string gameName = null) => PlayGames(gameID.ToEnumerable(), gameName);
internal void PlayGames(IEnumerable<uint> gameIDs, string gameName = null) {
if (gameIDs == null) {
ArchiLogger.LogNullError(nameof(gameIDs));
return;
}
ArchiHandler.PlayGames(gameIDs, gameName);
}
internal async Task<bool> RefreshSession() {
if (!IsConnectedAndLoggedOn) {
return false;
@@ -526,7 +567,7 @@ namespace ArchiSteamFarm {
return false;
}
if (await ArchiWebHandler.Init(SteamClient.SteamID, SteamClient.ConnectedUniverse, callback.Nonce, BotConfig.SteamParentalPIN).ConfigureAwait(false)) {
if (await ArchiWebHandler.Init(SteamID, SteamClient.ConnectedUniverse, callback.Nonce, BotConfig.SteamParentalPIN).ConfigureAwait(false)) {
return true;
}
@@ -571,9 +612,9 @@ namespace ArchiSteamFarm {
case "!PASSWORD":
return ResponsePassword(steamID);
case "!PAUSE":
return await ResponsePause(steamID, false).ConfigureAwait(false);
case "!PAUSE^":
return await ResponsePause(steamID, true).ConfigureAwait(false);
case "!PAUSE~":
return await ResponsePause(steamID, false).ConfigureAwait(false);
case "!REJOINCHAT":
return ResponseRejoinChat(steamID);
case "!RESUME":
@@ -609,6 +650,8 @@ namespace ArchiSteamFarm {
}
return await ResponseAddLicense(steamID, args[1]).ConfigureAwait(false);
case "!API":
return ResponseAPI(steamID, args[1]);
case "!FARM":
return await ResponseFarm(steamID, args[1]).ConfigureAwait(false);
case "!INPUT":
@@ -632,9 +675,9 @@ namespace ArchiSteamFarm {
case "!PASSWORD":
return await ResponsePassword(steamID, args[1]).ConfigureAwait(false);
case "!PAUSE":
return await ResponsePause(steamID, args[1], false).ConfigureAwait(false);
case "!PAUSE^":
return await ResponsePause(steamID, args[1], true).ConfigureAwait(false);
case "!PAUSE~":
return await ResponsePause(steamID, args[1], false).ConfigureAwait(false);
case "!PLAY":
if (args.Length > 2) {
return await ResponsePlay(steamID, args[1], args[2]).ConfigureAwait(false);
@@ -662,6 +705,8 @@ namespace ArchiSteamFarm {
}
return await ResponseRedeem(steamID, args[1], ERedeemFlags.ForceForwarding | ERedeemFlags.SkipInitial).ConfigureAwait(false);
case "!REJOINCHAT":
return await ResponseRejoinChat(steamID, args[1]).ConfigureAwait(false);
case "!RESUME":
return await ResponseResume(steamID, args[1]).ConfigureAwait(false);
case "!START":
@@ -716,13 +761,17 @@ namespace ArchiSteamFarm {
}
private void CheckOccupationStatus() {
StopPlayingWasBlockedTimer();
if (!IsPlayingPossible) {
ArchiLogger.LogGenericInfo(Strings.BotAccountOccupied);
PlayingWasBlocked = true;
StopFamilySharingInactivityTimer();
return;
}
ArchiLogger.LogGenericInfo(Strings.BotAccountFree);
PlayingWasBlocked = false;
CardsFarmer.Resume(false);
}
@@ -837,6 +886,18 @@ namespace ArchiSteamFarm {
return result;
}
private ulong GetFirstSteamMasterID() => BotConfig.SteamUserPermissions.Where(kv => (kv.Key != 0) && (kv.Key != SteamID) && (kv.Value == BotConfig.EPermission.Master)).Select(kv => kv.Key).OrderBy(steamID => steamID).FirstOrDefault();
private BotConfig.EPermission GetSteamUserPermission(ulong steamID) {
if (steamID == 0) {
ArchiLogger.LogNullError(nameof(steamID));
return BotConfig.EPermission.None;
}
BotConfig.EPermission permission;
return BotConfig.SteamUserPermissions.TryGetValue(steamID, out permission) ? permission : BotConfig.EPermission.None;
}
private void HandleCallbacks() {
TimeSpan timeSpan = TimeSpan.FromMilliseconds(CallbackSleep);
while (KeepRunning || SteamClient.IsConnected) {
@@ -992,24 +1053,29 @@ namespace ArchiSteamFarm {
private void InitModules() {
CardsFarmer.SetInitialState(BotConfig.Paused);
if ((BotConfig.SendTradePeriod > 0) && (BotConfig.SteamMasterID != 0)) {
TimeSpan delay = TimeSpan.FromHours(BotConfig.SendTradePeriod) + TimeSpan.FromMinutes(Bots.Count);
TimeSpan period = TimeSpan.FromHours(BotConfig.SendTradePeriod);
if (SendItemsTimer == null) {
SendItemsTimer = new Timer(
async e => await ResponseLoot(BotConfig.SteamMasterID).ConfigureAwait(false),
null,
delay, // Delay
period // Period
);
} else {
SendItemsTimer.Change(delay, period);
}
} else if (SendItemsTimer != null) {
if (SendItemsTimer != null) {
SendItemsTimer.Dispose();
SendItemsTimer = null;
}
if (BotConfig.SendTradePeriod == 0) {
return;
}
ulong steamMasterID = BotConfig.SteamUserPermissions.Where(kv => kv.Value == BotConfig.EPermission.Master).Select(kv => kv.Key).FirstOrDefault();
if (steamMasterID == 0) {
return;
}
TimeSpan delay = TimeSpan.FromHours(BotConfig.SendTradePeriod) + TimeSpan.FromMinutes(Bots.Count);
TimeSpan period = TimeSpan.FromHours(BotConfig.SendTradePeriod);
SendItemsTimer = new Timer(
async e => await ResponseLoot(steamMasterID).ConfigureAwait(false),
null,
delay, // Delay
period // Period
);
}
private void InitPermanentConnectionFailure() {
@@ -1032,13 +1098,17 @@ namespace ArchiSteamFarm {
await Start().ConfigureAwait(false);
}
private bool IsMaster(ulong steamID) {
if (steamID != 0) {
return (steamID == BotConfig.SteamMasterID) || IsOwner(steamID);
private bool IsFamilySharing(ulong steamID) {
if (steamID == 0) {
ArchiLogger.LogNullError(nameof(steamID));
return false;
}
ArchiLogger.LogNullError(nameof(steamID));
return false;
if (IsOwner(steamID)) {
return true;
}
return SteamFamilySharingIDs.Contains(steamID) || (GetSteamUserPermission(steamID) >= BotConfig.EPermission.FamilySharing);
}
private bool IsMasterClanID(ulong steamID) {
@@ -1050,6 +1120,19 @@ namespace ArchiSteamFarm {
return false;
}
private bool IsOperator(ulong steamID) {
if (steamID == 0) {
ArchiLogger.LogNullError(nameof(steamID));
return false;
}
if (IsOwner(steamID)) {
return true;
}
return GetSteamUserPermission(steamID) >= BotConfig.EPermission.Operator;
}
private static bool IsOwner(ulong steamID) {
if (steamID != 0) {
return (steamID == Program.GlobalConfig.SteamOwnerID) || (Debugging.IsDebugBuild && (steamID == SharedInfo.ArchiSteamID));
@@ -1232,6 +1315,7 @@ namespace ArchiSteamFarm {
LastLogOnResult = EResult.Invalid;
HeartBeatFailures = 0;
StopConnectionFailureTimer();
StopPlayingWasBlockedTimer();
ArchiLogger.LogGenericInfo(Strings.BotDisconnected);
@@ -1352,7 +1436,7 @@ namespace ArchiSteamFarm {
ArchiHandler.AcceptClanInvite(friend.SteamID, false);
}
} else {
if (IsMaster(friend.SteamID)) {
if (IsOperator(friend.SteamID)) {
SteamFriends.AddFriend(friend.SteamID);
} else if (BotConfig.IsBotAccount) {
SteamFriends.RemoveFriend(friend.SteamID);
@@ -1401,16 +1485,6 @@ namespace ArchiSteamFarm {
await Task.Delay(1000).ConfigureAwait(false); // Wait a second for eventual PlayingSessionStateCallback or SharedLibraryLockStatusCallback
if (!ArchiWebHandler.Ready) {
for (byte i = 0; (i < Program.GlobalConfig.ConnectionTimeout) && !ArchiWebHandler.Ready; i++) {
await Task.Delay(1000).ConfigureAwait(false);
}
if (!ArchiWebHandler.Ready) {
return;
}
}
// Normally we ResetGamesPlayed() in OnFarmingStopped() but there is no farming event if CardsFarmer module is disabled
// Therefore, trigger extra ResetGamesPlayed(), but only in this specific case
if (CardsFarmer.Paused) {
@@ -1481,6 +1555,15 @@ namespace ArchiSteamFarm {
LibraryLockedBySteamID = TwoFactorCodeFailures = 0;
PlayingBlocked = false;
if (PlayingWasBlocked && (PlayingWasBlockedTimer == null)) {
PlayingWasBlockedTimer = new Timer(
e => ResetPlayingWasBlockedWithTimer(),
null,
TimeSpan.FromSeconds(MinPlayingBlockedTTL), // Delay
Timeout.InfiniteTimeSpan // Period
);
}
AccountFlags = callback.AccountFlags;
if (IsAccountLimited) {
@@ -1493,6 +1576,7 @@ namespace ArchiSteamFarm {
if ((callback.CellID != 0) && (Program.GlobalDatabase.CellID != callback.CellID)) {
Program.GlobalDatabase.CellID = callback.CellID;
CMClient.Servers.CellID = callback.CellID;
}
if (!HasMobileAuthenticator) {
@@ -1667,7 +1751,7 @@ namespace ArchiSteamFarm {
return;
}
if (callback.FriendID == SteamClient.SteamID) {
if (callback.FriendID == SteamID) {
Events.OnPersonaState(this, callback);
Statistics?.OnPersonaState(callback).Forget();
} else if ((callback.FriendID == LibraryLockedBySteamID) && (callback.GameID == 0)) {
@@ -1710,13 +1794,13 @@ namespace ArchiSteamFarm {
// Ignore no status updates
if (LibraryLockedBySteamID == 0) {
if ((callback.LibraryLockedBySteamID == 0) || (callback.LibraryLockedBySteamID == SteamClient.SteamID)) {
if ((callback.LibraryLockedBySteamID == 0) || (callback.LibraryLockedBySteamID == SteamID)) {
return;
}
LibraryLockedBySteamID = callback.LibraryLockedBySteamID;
} else {
if ((callback.LibraryLockedBySteamID != 0) && (callback.LibraryLockedBySteamID != SteamClient.SteamID)) {
if ((callback.LibraryLockedBySteamID != 0) && (callback.LibraryLockedBySteamID != SteamID)) {
return;
}
@@ -1744,6 +1828,11 @@ namespace ArchiSteamFarm {
ArchiHandler.PlayGames(BotConfig.GamesPlayedWhileIdle, BotConfig.CustomGamePlayedWhileIdle);
}
private void ResetPlayingWasBlockedWithTimer() {
PlayingWasBlocked = false;
StopPlayingWasBlockedTimer();
}
private async Task<string> Response2FA(ulong steamID) {
if (steamID == 0) {
ArchiLogger.LogNullError(nameof(steamID));
@@ -1855,7 +1944,7 @@ namespace ArchiSteamFarm {
return null;
}
if (!IsMaster(steamID)) {
if (!IsOperator(steamID)) {
return null;
}
@@ -1900,7 +1989,7 @@ namespace ArchiSteamFarm {
return null;
}
if (!IsMaster(steamID)) {
if (!IsOperator(steamID)) {
return null;
}
@@ -1958,15 +2047,29 @@ namespace ArchiSteamFarm {
return responses.Count > 0 ? string.Join("", responses) : null;
}
private static string ResponseAPI(ulong steamID) {
if (steamID != 0) {
return IsOwner(steamID) ? FormatStaticResponse(GetAPIStatus()) : null;
private string ResponseAPI(ulong steamID) {
if (steamID == 0) {
return IsMaster(steamID) ? GetAPIStatus(Bots.Where(kv => kv.Value == this).ToDictionary(kv => kv.Key, kv => kv.Value)) : null;
}
ASF.ArchiLogger.LogNullError(nameof(steamID));
return null;
}
private static string ResponseAPI(ulong steamID, string botNames) {
if ((steamID == 0) || string.IsNullOrEmpty(botNames)) {
ASF.ArchiLogger.LogNullError(nameof(steamID) + " || " + nameof(botNames));
return null;
}
HashSet<Bot> bots = GetBots(botNames);
if ((bots == null) || (bots.Count == 0)) {
return IsOwner(steamID) ? FormatStaticResponse(string.Format(Strings.BotNotFound, botNames)) : null;
}
return GetAPIStatus(Bots.Where(kv => bots.Contains(kv.Value) && kv.Value.IsMaster(steamID)).ToDictionary(kv => kv.Key, kv => kv.Value));
}
private static string ResponseExit(ulong steamID) {
if (steamID == 0) {
ASF.ArchiLogger.LogNullError(nameof(steamID));
@@ -2038,7 +2141,7 @@ namespace ArchiSteamFarm {
private string ResponseHelp(ulong steamID) {
if (steamID != 0) {
return IsMaster(steamID) ? FormatBotResponse("https://github.com/" + SharedInfo.GithubRepo + "/wiki/Commands") : null;
return IsFamilySharing(steamID) ? FormatBotResponse("https://github.com/" + SharedInfo.GithubRepo + "/wiki/Commands") : null;
}
ArchiLogger.LogNullError(nameof(steamID));
@@ -2117,11 +2220,12 @@ namespace ArchiSteamFarm {
return FormatBotResponse(Strings.BotLootingTemporarilyDisabled);
}
if (BotConfig.SteamMasterID == 0) {
ulong targetSteamMasterID = GetFirstSteamMasterID();
if (targetSteamMasterID == 0) {
return FormatBotResponse(Strings.BotLootingMasterNotDefined);
}
if (BotConfig.SteamMasterID == SteamClient.SteamID) {
if (targetSteamMasterID == SteamID) {
return FormatBotResponse(Strings.BotLootingYourself);
}
@@ -2136,12 +2240,16 @@ namespace ArchiSteamFarm {
return FormatBotResponse(string.Format(Strings.ErrorIsEmpty, nameof(inventory)));
}
if (!await ArchiWebHandler.SendTradeOffer(inventory, BotConfig.SteamMasterID, BotConfig.SteamTradeToken).ConfigureAwait(false)) {
if (!await ArchiWebHandler.MarkSentTrades().ConfigureAwait(false)) {
return FormatBotResponse(Strings.BotLootingFailed);
}
if (!await ArchiWebHandler.SendTradeOffer(inventory, targetSteamMasterID, BotConfig.SteamTradeToken).ConfigureAwait(false)) {
return FormatBotResponse(Strings.BotLootingFailed);
}
await Task.Delay(3000).ConfigureAwait(false); // Sometimes we can be too fast for Steam servers to generate confirmations, wait a short moment
await AcceptConfirmations(true, Steam.ConfirmationDetails.EType.Trade, BotConfig.SteamMasterID).ConfigureAwait(false);
await AcceptConfirmations(true, Steam.ConfirmationDetails.EType.Trade, targetSteamMasterID).ConfigureAwait(false);
return FormatBotResponse(Strings.BotLootingSuccess);
}
@@ -2227,7 +2335,7 @@ namespace ArchiSteamFarm {
return null;
}
if (!IsMaster(steamID)) {
if (!IsOperator(steamID)) {
return null;
}
@@ -2237,7 +2345,7 @@ namespace ArchiSteamFarm {
Dictionary<uint, string> ownedGames;
if (await ArchiWebHandler.HasValidApiKey().ConfigureAwait(false)) {
ownedGames = await ArchiWebHandler.GetOwnedGames(SteamClient.SteamID).ConfigureAwait(false);
ownedGames = await ArchiWebHandler.GetOwnedGames(SteamID).ConfigureAwait(false);
} else {
ownedGames = await ArchiWebHandler.GetMyOwnedGames().ConfigureAwait(false);
}
@@ -2248,25 +2356,32 @@ namespace ArchiSteamFarm {
StringBuilder response = new StringBuilder();
string[] games = query.Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
foreach (string game in games) {
// Check if this is gameID
uint gameID;
if (uint.TryParse(game, out gameID) && (gameID != 0)) {
if (OwnedPackageIDs.Contains(gameID)) {
response.Append(FormatBotResponse(string.Format(Strings.BotOwnedAlready, gameID)));
if (query.Equals("*")) {
foreach (KeyValuePair<uint, string> ownedGame in ownedGames) {
response.Append(FormatBotResponse(string.Format(Strings.BotOwnedAlreadyWithName, ownedGame.Key, ownedGame.Value)));
}
} else {
string[] games = query.Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
foreach (string game in games) {
// Check if this is gameID
uint gameID;
if (uint.TryParse(game, out gameID) && (gameID != 0)) {
if (OwnedPackageIDs.Contains(gameID)) {
response.Append(FormatBotResponse(string.Format(Strings.BotOwnedAlready, gameID)));
continue;
}
string ownedName;
response.Append(FormatBotResponse(ownedGames.TryGetValue(gameID, out ownedName) ? string.Format(Strings.BotOwnedAlreadyWithName, gameID, ownedName) : string.Format(Strings.BotNotOwnedYet, gameID)));
continue;
}
string ownedName;
response.Append(FormatBotResponse(ownedGames.TryGetValue(gameID, out ownedName) ? string.Format(Strings.BotOwnedAlreadyWithName, gameID, ownedName) : string.Format(Strings.BotNotOwnedYet, gameID)));
continue;
}
// This is a string, so check our entire library
foreach (KeyValuePair<uint, string> ownedGame in ownedGames.Where(ownedGame => ownedGame.Value.IndexOf(game, StringComparison.OrdinalIgnoreCase) >= 0)) {
response.Append(FormatBotResponse(string.Format(Strings.BotOwnedAlreadyWithName, ownedGame.Key, ownedGame.Value)));
// This is a string, so check our entire library
foreach (KeyValuePair<uint, string> ownedGame in ownedGames.Where(ownedGame => ownedGame.Value.IndexOf(game, StringComparison.OrdinalIgnoreCase) >= 0)) {
response.Append(FormatBotResponse(string.Format(Strings.BotOwnedAlreadyWithName, ownedGame.Key, ownedGame.Value)));
}
}
}
@@ -2354,10 +2469,15 @@ namespace ArchiSteamFarm {
return null;
}
if (!IsMaster(steamID) && !SteamFamilySharingIDs.Contains(steamID)) {
BotConfig.EPermission permission = GetSteamUserPermission(steamID);
if (permission < BotConfig.EPermission.FamilySharing) {
return null;
}
if (sticky && (permission < BotConfig.EPermission.Master)) {
return FormatBotResponse(Strings.ErrorAccessDenied);
}
if (!IsConnectedAndLoggedOn) {
return FormatBotResponse(Strings.BotNotConnected);
}
@@ -2368,7 +2488,7 @@ namespace ArchiSteamFarm {
await CardsFarmer.Pause(sticky).ConfigureAwait(false);
if (!SteamFamilySharingIDs.Contains(steamID)) {
if (permission >= BotConfig.EPermission.Master) {
return FormatBotResponse(Strings.BotAutomaticIdlingNowPaused);
}
@@ -2504,7 +2624,7 @@ namespace ArchiSteamFarm {
return null;
}
if (!IsMaster(steamID)) {
if (!IsOperator(steamID)) {
return null;
}
@@ -2696,23 +2816,51 @@ namespace ArchiSteamFarm {
return responses.Count > 0 ? string.Join("", responses) : null;
}
private static string ResponseRejoinChat(ulong steamID) {
private string ResponseRejoinChat(ulong steamID) {
if (steamID == 0) {
ASF.ArchiLogger.LogNullError(nameof(steamID));
ArchiLogger.LogNullError(nameof(steamID));
return null;
}
if (!IsOwner(steamID)) {
if (!IsOperator(steamID)) {
return null;
}
foreach (Bot bot in Bots.Values) {
bot.JoinMasterChat();
}
JoinMasterChat();
return FormatStaticResponse(Strings.Done);
}
private static async Task<string> ResponseRejoinChat(ulong steamID, string botNames) {
if ((steamID == 0) || string.IsNullOrEmpty(botNames)) {
ASF.ArchiLogger.LogNullError(nameof(steamID) + " || " + nameof(botNames));
return null;
}
HashSet<Bot> bots = GetBots(botNames);
if ((bots == null) || (bots.Count == 0)) {
return IsOwner(steamID) ? FormatStaticResponse(string.Format(Strings.BotNotFound, botNames)) : null;
}
ICollection<string> results;
IEnumerable<Task<string>> tasks = bots.Select(bot => Task.Run(() => bot.ResponseRejoinChat(steamID)));
switch (Program.GlobalConfig.OptimizationMode) {
case GlobalConfig.EOptimizationMode.MinMemoryUsage:
results = new List<string>(bots.Count);
foreach (Task<string> task in tasks) {
results.Add(await task.ConfigureAwait(false));
}
break;
default:
results = await Task.WhenAll(tasks).ConfigureAwait(false);
break;
}
List<string> responses = new List<string>(results.Where(result => !string.IsNullOrEmpty(result)));
return responses.Count > 0 ? string.Join("", responses) : null;
}
private static string ResponseRestart(ulong steamID) {
if (steamID == 0) {
ASF.ArchiLogger.LogNullError(nameof(steamID));
@@ -2842,12 +2990,12 @@ namespace ArchiSteamFarm {
return null;
}
if (!IsMaster(steamID)) {
if (!IsFamilySharing(steamID)) {
return null;
}
if (!IsConnectedAndLoggedOn) {
return FormatBotResponse(KeepRunning ? Strings.BotStatusNotConnected : Strings.BotStatusNotRunning);
return FormatBotResponse(KeepRunning ? Strings.BotStatusConnecting : Strings.BotStatusNotRunning);
}
if (PlayingBlocked) {
@@ -2971,7 +3119,7 @@ namespace ArchiSteamFarm {
private string ResponseUnknown(ulong steamID) {
if (steamID != 0) {
return IsMaster(steamID) ? FormatBotResponse(Strings.UnknownCommand) : null;
return IsOperator(steamID) ? FormatBotResponse(Strings.UnknownCommand) : null;
}
ArchiLogger.LogNullError(nameof(steamID));
@@ -2994,7 +3142,7 @@ namespace ArchiSteamFarm {
private string ResponseVersion(ulong steamID) {
if (steamID != 0) {
return IsMaster(steamID) ? FormatBotResponse(string.Format(Strings.BotVersion, SharedInfo.ASF, SharedInfo.Version)) : null;
return IsOperator(steamID) ? FormatBotResponse(string.Format(Strings.BotVersion, SharedInfo.ASF, SharedInfo.Version)) : null;
}
ArchiLogger.LogNullError(nameof(steamID));
@@ -3125,6 +3273,15 @@ namespace ArchiSteamFarm {
FamilySharingInactivityTimer = null;
}
private void StopPlayingWasBlockedTimer() {
if (PlayingWasBlockedTimer == null) {
return;
}
PlayingWasBlockedTimer.Dispose();
PlayingWasBlockedTimer = null;
}
[Flags]
private enum ERedeemFlags : byte {
None = 0,

View File

@@ -97,12 +97,13 @@ namespace ArchiSteamFarm {
[JsonProperty(Required = Required.DisallowNull)]
internal readonly ulong SteamMasterClanID = 0;
[JsonProperty(Required = Required.DisallowNull)]
internal readonly ulong SteamMasterID = 0;
[JsonProperty]
internal readonly string SteamTradeToken = null;
[SuppressMessage("ReSharper", "CollectionNeverUpdated.Global")]
[JsonProperty(Required = Required.DisallowNull)]
internal readonly Dictionary<ulong, EPermission> SteamUserPermissions = new Dictionary<ulong, EPermission>();
[JsonProperty(Required = Required.DisallowNull)]
internal readonly ETradingPreferences TradingPreferences = ETradingPreferences.None;
@@ -175,6 +176,13 @@ namespace ArchiSteamFarm {
NamesDescending
}
internal enum EPermission : byte {
None,
FamilySharing,
Operator,
Master
}
[Flags]
internal enum ERedeemingPreferences : byte {
None = 0,

View File

@@ -115,6 +115,11 @@ namespace ArchiSteamFarm {
return;
}
// This call verifies if JSON is alright
// We don't wrap it in try catch as it should always be the case
// And if it's not, we want to know about it (in a crash) and correct it in future version
JsonConvert.DeserializeObject<BotDatabase>(json);
lock (FileLock) {
for (byte i = 0; i < 5; i++) {
try {

View File

@@ -27,6 +27,7 @@ using System.Collections.Concurrent;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using System.Net;
using System.Text.RegularExpressions;
using System.Threading;
using System.Threading.Tasks;
@@ -187,6 +188,15 @@ namespace ArchiSteamFarm {
return;
}
if (Bot.PlayingWasBlocked) {
await Task.Delay(Bot.MinPlayingBlockedTTL * 1000).ConfigureAwait(false);
if (!Bot.IsPlayingPossible) {
Bot.ArchiLogger.LogGenericInfo(Strings.PlayingNotAvailable);
return;
}
}
KeepFarming = NowFarming = true;
} finally {
FarmingSemaphore.Release();
@@ -477,7 +487,7 @@ namespace ArchiSteamFarm {
continue;
}
name = name.Substring(nameStartIndex, nameEndIndex - nameStartIndex);
name = WebUtility.HtmlDecode(name.Substring(nameStartIndex, nameEndIndex - nameStartIndex));
// We have two possible cases here
// Either we have decent info about appID, name, hours and cardsRemaining (cardsRemaining > 0)
@@ -532,7 +542,7 @@ namespace ArchiSteamFarm {
Bot.ArchiLogger.LogGenericWarning(string.Format(Strings.WarningIdlingGameMismatch, game.AppID, game.GameName, appID));
}
Bot.ArchiHandler.PlayGame(appID, Bot.BotConfig.CustomGamePlayedWhileFarming);
Bot.PlayGame(appID, Bot.BotConfig.CustomGamePlayedWhileFarming);
DateTime endFarmingDate = DateTime.UtcNow.AddHours(Program.GlobalConfig.MaxFarmingTime);
bool? keepFarming = await ShouldFarm(game).ConfigureAwait(false);
@@ -580,7 +590,7 @@ namespace ArchiSteamFarm {
return true;
}
Bot.ArchiHandler.PlayGames(games.Select(game => game.AppID), Bot.BotConfig.CustomGamePlayedWhileFarming);
Bot.PlayGames(games.Select(game => game.AppID), Bot.BotConfig.CustomGamePlayedWhileFarming);
bool success = true;
while (maxHour < 2) {

View File

@@ -116,6 +116,11 @@ namespace ArchiSteamFarm {
return;
}
// This call verifies if JSON is alright
// We don't wrap it in try catch as it should always be the case
// And if it's not, we want to know about it (in a crash) and correct it in future version
JsonConvert.DeserializeObject<GlobalDatabase>(json);
lock (FileLock) {
for (byte i = 0; i < 5; i++) {
try {

View File

@@ -39,17 +39,17 @@ namespace ArchiSteamFarm {
public Task UpdateServerListAsync(IEnumerable<IPEndPoint> endPoints) {
if (endPoints == null) {
ASF.ArchiLogger.LogNullError(nameof(endPoints));
return Task.Delay(0);
return Task.CompletedTask;
}
HashSet<IPEndPoint> newServers = new HashSet<IPEndPoint>(endPoints);
if (!Servers.ReplaceIfNeededWith(newServers)) {
return Task.Delay(0);
return Task.CompletedTask;
}
ServerListUpdated?.Invoke(this, EventArgs.Empty);
return Task.Delay(0);
return Task.CompletedTask;
}
internal event EventHandler ServerListUpdated;

File diff suppressed because it is too large Load Diff

View File

@@ -285,6 +285,7 @@
</root>

View File

@@ -357,6 +357,7 @@
</root>

View File

@@ -122,7 +122,7 @@
<comment>{0} will be replaced by trade number</comment>
</data>
<data name="AutoUpdateCheckInfo" xml:space="preserve">
<value>ASF автоматично ще проверява за нови версии на всеки {0} часа.</value>
<value>ASF автоматично ще проверява за нови версии на всеки {0} час/а/.</value>
<comment>{0} will be replaced by number of hours</comment>
</data>
<data name="Content" xml:space="preserve">
@@ -141,12 +141,17 @@
<value>Изключение: {0}() {1} StackTrace:{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>Изключване при код за грешка различен от 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>
<comment>{0} will be replaced by file's path</comment>
</data>
<data name="ErrorIsInvalid" xml:space="preserve">
<value>{0} е невалиден!</value>
<comment>{0} will be replaced by object's name</comment>
@@ -154,7 +159,9 @@
<data name="ErrorMobileAuthenticatorInvalidDeviceID" xml:space="preserve">
<value>Отказва да изпълни тази функцията, поради невалиден DeviceID в ASF 2FA!</value>
</data>
<data name="ErrorNoBotsDefined" xml:space="preserve">
<value>Няма настроени ботове. Да не би да сте забравили да настроите ASF?</value>
</data>
<data name="ErrorObjectIsNull" xml:space="preserve">
<value>{0} е нулев!</value>
<comment>{0} will be replaced by object's name</comment>
@@ -163,8 +170,14 @@
<value>Разборът {0} се провали!</value>
<comment>{0} will be replaced by object's name</comment>
</data>
<data name="ErrorRemovingOldBinary" xml:space="preserve">
<value>Не може да се премахне старият ASF файл. Моля премахнете {0} ръчно, за може обновлението да сработи!</value>
<comment>{0} will be replaced by file's path</comment>
</data>
<data name="ErrorRequestFailedTooManyTimes" xml:space="preserve">
<value>Заявката не е изпълнена след {0} опити!</value>
<comment>{0} will be replaced by maximum number of tries</comment>
</data>
<data name="ErrorUpdateCheckFailed" xml:space="preserve">
<value>Не успя да се провери за последната версия!</value>
</data>
@@ -318,11 +331,25 @@
<value>Моля, въведете Вашият WCF host: </value>
<comment>Please note that this translation should end with space</comment>
</data>
<data name="WarningUnknownValuePleaseReport" xml:space="preserve">
<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="WarningTooManyGamesToPlay" xml:space="preserve">
<value>Играенето на повече от {0} игри едновременно е невъзможно, само първите {0} от {1} ще бъдат ползвани!</value>
<comment>{0} will be replaced by max number of games, {1} will be replaced by name of the configuration property</comment>
</data>
<data name="WarningWCFIgnoringCommand" xml:space="preserve">
<value>Пренебрегва се WCF команда, защото --client не беше уточнен: {0}</value>
<comment>{0} will be replaced by WCF command</comment>
</data>
<data name="ErrorWCFAddressAccessDeniedException" xml:space="preserve">
<value>WCF услугата не може да бъде стартирана, заради AddressAccessDeniedException! Ако искате да ползвате WCF услугата, предоставена от ASF, помислете за стартирането на ASF като администратор или задаването му на правилните позволения!</value>
</data>
<data name="WCFAnswered" xml:space="preserve">
<value>Отговоряне на WCF командата: {0} с {1}</value>
<comment>{0} will be replaced by WCF command, {1} will be replaced by WCF answer</comment>
</data>
<data name="WCFReady" xml:space="preserve">
<value>WSF сървърът е готов!</value>
</data>
@@ -330,11 +357,25 @@
<value>WCF отговор получен: {0}</value>
<comment>{0} will be replaced by WCF response</comment>
</data>
<data name="WCFSendingCommand" xml:space="preserve">
<value>Изпращане на командата: {0} към WCF сървър на {1}...</value>
<comment>{0} will be replaced by WCF command, {1} will be replaced by WCF hostname</comment>
</data>
<data name="WCFStarting" xml:space="preserve">
<value>Стартиране WCF сървър на {0}...</value>
<comment>{0} will be replaced by WCF hostname</comment>
</data>
<data name="BotAlreadyStopped" xml:space="preserve">
<value>Този бот вече е спрян!</value>
</data>
<data name="BotNotFound" xml:space="preserve">
<value>Не е намерен бот с името {0}!</value>
<comment>{0} will be replaced by bot's name query (string)</comment>
</data>
<data name="BotStatusOverview" xml:space="preserve">
<value>Има {0}/{1} работещи бота, с общо {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="CheckingFirstBadgePage" xml:space="preserve">
@@ -400,12 +441,20 @@
<comment>{0} will be replaced by giftID (number)</comment>
</data>
<data name="BotAddLicense" xml:space="preserve">
<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>
<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>Този бот вече работи!</value>
</data>
<data name="BotAuthenticatorConverting" xml:space="preserve">
<value>Превръщането на .maFile в ASF формат...</value>
</data>
<data name="BotAuthenticatorToken" xml:space="preserve">
@@ -454,21 +503,41 @@
<data name="BotNotOwnedYet" xml:space="preserve">
<value>Все още не се притежава: {0}</value>
<comment>{0} will be replaced by query (string)</comment>
</data>
<data name="BotOwnedAlreadyWithName" xml:space="preserve">
<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="BotReconnecting" xml:space="preserve">
<value>Повторно свързване…</value>
</data>
<data name="BotRedeem" xml:space="preserve">
<value>Ключ: {0} | Статус: {1}</value>
<comment>{0} will be replaced by cd-key (string), {1} will be replaced by status string</comment>
</data>
<data name="BotRedeemWithItems" xml:space="preserve">
<value>Ключ: {0} | Статус: {1} | Предмети: {2}</value>
<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>
</data>
<data name="BotStatusNotIdling" xml:space="preserve">
<value>Бота не "играе" нищо.</value>
</data>
<data name="BotStatusLimited" xml:space="preserve">
<value>Бота е ограничен и не може да пусне никакви карти чрез "играене".</value>
</data>
<data name="BotStatusConnecting" xml:space="preserve">
<value>Ботът се свързва към мрежата на Steam.</value>
</data>
<data name="BotStatusNotRunning" xml:space="preserve">
<value>Ботът не работи.</value>
</data>
<data name="BotUnableToConnect" xml:space="preserve">
@@ -511,7 +580,9 @@
</data>
<data name="ErrorInvalidCurrentCulture" xml:space="preserve">
<value>Задали сте невалиден CurrentCulture. ASF ще продължи работа със зададения по подразбиране!</value>
</data>
@@ -522,5 +593,11 @@
<data name="BotOwnedAlready" xml:space="preserve">
<value>Вече се притежава: {0}</value>
<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>
</data>
</root>

View File

@@ -285,6 +285,7 @@
</root>

View File

@@ -144,12 +144,17 @@ StackTrace:
{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>Aplikace byla ukončena s nenulovým chybovým kódem.</value>
</data>
<data name="ErrorFailingRequest" xml:space="preserve">
<value>Požadavek selhal: {0}</value>
<comment>{0} will be replaced by URL of the request</comment>
</data>
<data name="ErrorGlobalConfigNotLoaded" xml:space="preserve">
<value>Globání konfiguraci nebylo možné načíst. Ověřte, že {0} existuje a je platný. Postupujte podle přiručky na wiki pokud si nejste jistí.</value>
<comment>{0} will be replaced by file's path</comment>
</data>
<data name="ErrorIsInvalid" xml:space="preserve">
<value>{0} je neplatný.</value>
<comment>{0} will be replaced by object's name</comment>
@@ -157,7 +162,9 @@ StackTrace:
<data name="ErrorMobileAuthenticatorInvalidDeviceID" xml:space="preserve">
<value>Provedení této funkce bylo odmítnuto z důvodu neplatného identifikátoru DeviceID v ASF 2FA.</value>
</data>
<data name="ErrorNoBotsDefined" xml:space="preserve">
<value>Nejsou nastaveni žádní boti. Nezapomněli jste nakonfigurovat ASF?</value>
</data>
<data name="ErrorObjectIsNull" xml:space="preserve">
<value>{0} má hodnotu null.</value>
<comment>{0} will be replaced by object's name</comment>
@@ -166,8 +173,14 @@ StackTrace:
<value>Analýza {0} selhala.</value>
<comment>{0} will be replaced by object's name</comment>
</data>
<data name="ErrorRemovingOldBinary" xml:space="preserve">
<value>Nepodařilo se odstranit starý binární soubor aplikace ASF. Chcete-li zajistit správné fungování funkce aktualizace, odstraňte soubor {0} ručně.</value>
<comment>{0} will be replaced by file's path</comment>
</data>
<data name="ErrorRequestFailedTooManyTimes" xml:space="preserve">
<value>Požadavek selhal po {0} pokusech.</value>
<comment>{0} will be replaced by maximum number of tries</comment>
</data>
<data name="ErrorUpdateCheckFailed" xml:space="preserve">
<value>Nelze zkontrolovat nejnovější verzi.</value>
</data>
@@ -289,14 +302,38 @@ StackTrace:
<value>Místní verze: {0} | Vzdálená verze: {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>Prosím, zadejte ID vašeho zařízení (včetně "android"): </value>
<comment>Please note that this translation should end with space</comment>
</data>
<data name="UserInputSteam2FA" xml:space="preserve">
<value>Zadejte váš 2FA kód z aplikace Steam: </value>
<comment>Please note that this translation should end with space</comment>
</data>
<data name="UserInputSteamGuard" xml:space="preserve">
<value>Zadejte kód autentifikátoru SteamGuard, který byl zaslán na Váš email: </value>
<comment>Please note that this translation should end with space</comment>
</data>
<data name="UserInputSteamLogin" xml:space="preserve">
<value>Prosím zadejte své přihlašovací jméno služby Steam: </value>
<comment>Please note that this translation should end with space</comment>
</data>
<data name="UserInputSteamParentalPIN" xml:space="preserve">
<value>Prosím zadejte svůj PIN rodičovské kontroly: </value>
<comment>Please note that this translation should end with space</comment>
</data>
<data name="UserInputSteamPassword" xml:space="preserve">
<value>Prosím, zadejte své heslo: </value>
<comment>Please note that this translation should end with space</comment>
</data>
<data name="UserInputUnknown" xml:space="preserve">
<value>Prosím, zadejte nezdokumentovanou hodnotu {0}: </value>
<comment>{0} will be replaced by property name. Please note that this translation should end with space</comment>
</data>
<data name="UserInputWCFHost" xml:space="preserve">
<value>Prosím, zadejte Vašeho hostitele WCF: </value>
<comment>Please note that this translation should end with space</comment>
</data>
<data name="WarningUnknownValuePleaseReport" xml:space="preserve">
<value>Obdržena neznámá konfigurace pro {0}, nahlašte: {1}</value>
<comment>{0} will be replaced by object's name, {1} will be replaced by value for that object</comment>
@@ -306,7 +343,7 @@ StackTrace:
<comment>{0} will be replaced by max number of games, {1} will be replaced by name of the configuration property</comment>
</data>
<data name="WarningWCFIgnoringCommand" xml:space="preserve">
<value>WCF příkaz je ignorován, protože klient nebyl zadán: {0}</value>
<value>WCF příkaz je ignorován, protože --client nebyl zadán: {0}</value>
<comment>{0} will be replaced by WCF command</comment>
</data>
<data name="ErrorWCFAddressAccessDeniedException" xml:space="preserve">
@@ -317,7 +354,7 @@ StackTrace:
<comment>{0} will be replaced by WCF command, {1} will be replaced by WCF answer</comment>
</data>
<data name="WCFReady" xml:space="preserve">
<value>Server WCF je připraven.</value>
<value>WCF server připraven!</value>
</data>
<data name="WCFResponseReceived" xml:space="preserve">
<value>Byla přijata odpověď WCF: {0}</value>
@@ -331,14 +368,25 @@ StackTrace:
<value>Spuštění serveru WCF na adrese {0}...</value>
<comment>{0} will be replaced by WCF hostname</comment>
</data>
<data name="BotAlreadyStopped" xml:space="preserve">
<value>Tento bot byl již zastaven.</value>
</data>
<data name="BotNotFound" xml:space="preserve">
<value>Bot se jménem {0} nebyl nalezen.</value>
<comment>{0} will be replaced by bot's name query (string)</comment>
</data>
<data name="BotStatusOverview" xml:space="preserve">
<value>Aktuálně je stuštěno {0}/{1} botů s celkovým počtem {2} her ({3} karet) zbývajících k vyfarmení.</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">
<value>Bot farmí hru {0} ({1}, {2} zbývajících karet) z celkového počtu {3} her ({4} karet) (zbývá {5}).</value>
<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 built from TimeSpan* translation parts</comment>
</data>
<data name="BotStatusIdlingList" xml:space="preserve">
<value>Bot farmí hru: {0} z celkového počtu {1} her ({2} karet) (zbývá ~{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 built from TimeSpan* translation parts</comment>
</data>
<data name="CheckingFirstBadgePage" xml:space="preserve">
<value>Kontrola první stránky s odznaky...</value>
</data>
@@ -410,7 +458,9 @@ StackTrace:
<data name="UnknownCommand" xml:space="preserve">
<value>Neznámý příkaz.</value>
</data>
<data name="WarningCouldNotCheckBadges" xml:space="preserve">
<value>Nepodařilo se získat informace o odznacích, zkusíme to později.</value>
</data>
<data name="WarningCouldNotCheckCardsStatus" xml:space="preserve">
<value>Nepodařilo se zkontrolovat stav karet hry: {0} ({1}) Pokus bude opakován později.</value>
<comment>{0} will be replaced by game's ID (number), {1} will be replaced by game's name</comment>
@@ -419,10 +469,20 @@ StackTrace:
<value>Přijímání dárku: {0}...</value>
<comment>{0} will be replaced by giftID (number)</comment>
</data>
<data name="BotAccountLimited" xml:space="preserve">
<value>Tento účet je limitovaný, farmení je trvale nedostupné, dokud nebude omezení odstraněno!</value>
</data>
<data name="BotAddLicense" xml:space="preserve">
<value>ID: {0} | Stav: {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} | Stav: {1} |Položky: {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>Tento bot je již spuštěný.</value>
</data>
<data name="BotAuthenticatorConverting" xml:space="preserve">
<value>Probíhá převod souboru .maFile do formátu aplikace ASF...</value>
</data>
@@ -436,8 +496,12 @@ StackTrace:
<value>2FA token: {0}</value>
<comment>{0} will be replaced by generated 2FA token (string)</comment>
</data>
<data name="BotAutomaticIdlingNowPaused" xml:space="preserve">
<value>Automatické farmení bylo pozastaveno.</value>
</data>
<data name="BotAutomaticIdlingNowResumed" xml:space="preserve">
<value>Automatické farmení bylo znovu spuštěno.</value>
</data>
<data name="BotAutomaticIdlingPausedAlready" xml:space="preserve">
<value>Automatické farmení je již pozastaveno.</value>
</data>
@@ -484,10 +548,7 @@ StackTrace:
<data name="BotLootingFailed" xml:space="preserve">
<value>Vytvoření obchodní nabídky selhalo.</value>
</data>
<data name="BotLootingMasterNotDefined" xml:space="preserve">
<value>Obchodní nabídku nelze odeslat (nedefinovaný SteamMasterID).</value>
<comment>SteamMasterID is name of bot config property, it should not be translated</comment>
</data>
<data name="BotLootingNoLootableTypes" xml:space="preserve">
<value>Zatím nemáte nastavené žádné typy pro zasílání.</value>
</data>
@@ -506,27 +567,56 @@ StackTrace:
<data name="BotLootingYourself" xml:space="preserve">
<value>Nelze zasílat sám sobě.</value>
</data>
<data name="BotNoASFAuthenticator" xml:space="preserve">
<value>Tento bot nemá povoleno ASF 2FA. Nezapomněli jste svůj autentifikátor naimportovat jeho ASF 2FA?</value>
</data>
<data name="BotNotConnected" xml:space="preserve">
<value>Tato instance bota není připojena.</value>
</data>
<data name="BotNotOwnedYet" xml:space="preserve">
<value>Ještě není ve vlastnictví: {0}</value>
<comment>{0} will be replaced by query (string)</comment>
</data>
<data name="BotOwnedAlreadyWithName" xml:space="preserve">
<value>Již je ve vlastnictví: {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="BotRateLimitExceeded" xml:space="preserve">
<value>Byl překročen limit; další pokus bude proveden po uplynutí {0} minut...</value>
<comment>{0} will be replaced by number of minutes</comment>
</data>
<data name="BotReconnecting" xml:space="preserve">
<value>Opětovné připojování...</value>
</data>
<data name="BotRedeem" xml:space="preserve">
<value>Klíč: {0} | Stav: {1}</value>
<comment>{0} will be replaced by cd-key (string), {1} will be replaced by status string</comment>
</data>
<data name="BotRedeemWithItems" xml:space="preserve">
<value>Klíč: {0} | Stav: {1} | Položky: {2}</value>
<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>Zastaralý klíč k přihlášení byl odstraněn.</value>
</data>
<data name="BotStatusNotIdling" xml:space="preserve">
<value>Bot nic nefarmí.</value>
</data>
<data name="BotStatusLimited" xml:space="preserve">
<value>Bot je limitovaný a nemůže získávat karty pomocí farmení.</value>
</data>
<data name="BotStatusConnecting" xml:space="preserve">
<value>Bot se připojuje k síti Steam.</value>
</data>
<data name="BotStatusNotRunning" xml:space="preserve">
<value>Bot není spuštěný.</value>
</data>
<data name="BotStatusPaused" xml:space="preserve">
<value>Bot je pozastavený, nebo běží v ručním režimu.</value>
</data>
<data name="BotStatusPlayingNotAvailable" xml:space="preserve">
<value>Bot je právě použiván.</value>
</data>
<data name="BotUnableToConnect" xml:space="preserve">
<value>Nelze se připojit ke Steamu: {0}</value>
<comment>{0} will be replaced by failure reason (string)</comment>
@@ -547,19 +637,34 @@ StackTrace:
<value>Došlo k selhání z důvodu chyby: {0}</value>
<comment>{0} will be replaced by failure reason (string)</comment>
</data>
<data name="BotConnectionLost" xml:space="preserve">
<value>Připojení k síti Steam bylo ztraceno. Opětovné připojování...</value>
</data>
<data name="BotAccountFree" xml:space="preserve">
<value>Účet již není využiván: farmení bylo znovu zahájeno.</value>
</data>
<data name="BotAccountOccupied" xml:space="preserve">
<value>Účet je v současné době využiván: ASF bude pokračovat ve farmení poté, co bude uvolněn...</value>
</data>
<data name="BotAutomaticIdlingPauseTimeout" xml:space="preserve">
<value>Sdílení knihovny nebylo v zadaném čase zahájeno. Farmení bylo opět spuštěno.</value>
</data>
<data name="BotConnecting" xml:space="preserve">
<value>Připojování...</value>
</data>
<data name="BotHeartBeatFailed" xml:space="preserve">
<value>Selhalo odpojení klienta. Ruší se instance bota.</value>
</data>
<data name="BotSteamDirectoryInitializationFailed" xml:space="preserve">
<value>Nelze inicializovat SteamDirectory: připojení k síti Steam může trvat déle, než je obvyklé.</value>
</data>
<data name="BotStopping" xml:space="preserve">
<value>Zastavování...</value>
</data>
<data name="ErrorBotConfigInvalid" xml:space="preserve">
<value>Konfigurace bota není platná. Zkontrolujte obsah souboru {0} a zkuste to znovu.</value>
<comment>{0} will be replaced by file's path</comment>
</data>
<data name="ErrorDatabaseInvalid" xml:space="preserve">
<value>Nelze načíst trvalou databázi. Pokud problém přetrvává, odstraňte soubor {0}, aby se databáze mohla znovu vytvořit.</value>
<comment>{0} will be replaced by file's path</comment>
@@ -574,16 +679,37 @@ StackTrace:
<data name="Welcome" xml:space="preserve">
<value>Vypadá to, že program spouštíte poprvé. Vítejte!</value>
</data>
<data name="ErrorInvalidCurrentCulture" xml:space="preserve">
<value>Váš zadaný CurrentCulture je neplatný, ASF bude spuštěný s výchozím.</value>
</data>
<data name="TranslationIncomplete" xml:space="preserve">
<value>ASF se pokusí použít váš preferovaný jazyk {0}. Překlad tohoto jazyka je ale dokončen pouze z {1}. Možná chcete pomoci zlepšit překlad aplikace ASF pro váš jazyk?</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>Farmení {0} ({1}) je dočasně zablokováno, protože ASF právě nemůže danou hru spustit.</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 zjistil chybné ID pro {0} ({1}) a použije tedy 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">
<value>{0} V{1}</value>
<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>Tento účet je uzamčen, farmení je permanentně nedostupné.</value>
</data>
<data name="BotStatusLocked" xml:space="preserve">
<value>Bot je uzamčen a nemůže získávat karty pomocí farmení.</value>
</data>
<data name="ErrorFunctionOnlyInHeadlessMode" xml:space="preserve">
<value>Tato funkce je dostupná pouze v bezhlavém režimu.</value>
</data>
<data name="BotOwnedAlready" xml:space="preserve">
<value>Již je ve vlastnictví: {0}</value>
<comment>{0} will be replaced by game's ID (number), {1} will be replaced by game's name</comment>
</data>
</root>

View File

@@ -285,6 +285,7 @@
</root>

View File

@@ -131,7 +131,7 @@
<comment>{0} will be replaced by content string. Please note that this string should include newline for formatting.</comment>
</data>
<data name="ErrorConfigPropertyInvalid" xml:space="preserve">
<value>Konfigurierte {0} Einstellung ist ungültig: {1}</value>
<value>Konfigurierte Einstellung {0} ist ungültig: {1}</value>
<comment>{0} will be replaced by name of the configuration property, {1} will be replaced by invalid value</comment>
</data>
<data name="ErrorEarlyFatalExceptionInfo" xml:space="preserve">
@@ -152,7 +152,7 @@ StackTrace:
<comment>{0} will be replaced by URL of the request</comment>
</data>
<data name="ErrorGlobalConfigNotLoaded" xml:space="preserve">
<value>Allgemeine Konfiguration konnte nicht geladen werden. Stelle sicher, dass {0} existiert und gültig ist! Folge dem 'Setting Up' Anleitung im Wiki, wenn du verwirrt bist.</value>
<value>Allgemeine Konfiguration konnte nicht geladen werden. Stelle sicher, dass {0} existiert und gültig ist! Folge der Anleitung 'Setting Up' im Wiki, falls du verwirrt sein solltest.</value>
<comment>{0} will be replaced by file's path</comment>
</data>
<data name="ErrorIsInvalid" xml:space="preserve">
@@ -174,7 +174,7 @@ StackTrace:
<comment>{0} will be replaced by object's name</comment>
</data>
<data name="ErrorRemovingOldBinary" xml:space="preserve">
<value>Konnte alte ASF Binärdatei nicht löschen. Bitte entferne {0} manuell, damit die Updatefunktion funktionieren kann!</value>
<value>Konnte alte ASF-Binärdatei nicht löschen. Bitte entferne {0} manuell, damit die Updatefunktion funktionieren kann!</value>
<comment>{0} will be replaced by file's path</comment>
</data>
<data name="ErrorRequestFailedTooManyTimes" xml:space="preserve">
@@ -191,10 +191,10 @@ StackTrace:
<value>Konnte nicht mit Aktualisierung fortfahren, weil diese Version keine Anlage enthält!</value>
</data>
<data name="ErrorUserInputRunningInHeadlessMode" xml:space="preserve">
<value>Anfrage für Usereingabe erhalten, aber der Prozess läuft im Headlessmodus!</value>
<value>Anfrage für Benutzereingabe erhalten, aber der Prozess läuft im Headless-Modus!</value>
</data>
<data name="ErrorWCFAccessDenied" xml:space="preserve">
<value>Verweigere die Bearbeitung dieser Anfrage wegen nicht gesetzter SteamOwnerID!</value>
<value>Verweigere die Bearbeitung dieser Anfrage, weil die SteamOwnerID nicht festgelegt wurde!</value>
<comment>SteamOwnerID is name of bot config property, it should not be translated</comment>
</data>
<data name="Exiting" xml:space="preserve">
@@ -231,18 +231,18 @@ StackTrace:
<value>Starte neu...</value>
</data>
<data name="WarningRuntimeUnsupported" xml:space="preserve">
<value>ASF hat eine nicht unterstützte Laufzeitversion entdeckt, Programm könnte in derzeitiger Umgebung NICHT korrekt laufen. Du lässt das Programm auf eigene Gefahr und ohne Support laufen!</value>
<value>ASF hat eine nicht unterstützte Laufzeitversion entdeckt, Programm könnte in derzeitiger Umgebung NICHT korrekt laufen. Du lässt das Programm auf eigene Gefahr und ohne Hilfe laufen!</value>
</data>
<data name="RuntimeVersionComparison" xml:space="preserve">
<value>Benötigte Version: {0} | Gefundene Version: {1}</value>
<comment>{0} will be replaced by required version, {1} will be replaced by current version</comment>
</data>
<data name="RuntimeVersionOK" xml:space="preserve">
<value>Deine {0} Laufzeitsversion ist OK.</value>
<value>Deine {0} Laufzeitversion ist OK.</value>
<comment>{0} will be replaced by runtime name (e.g. "Mono")</comment>
</data>
<data name="WarningRuntimeVersionTooOld" xml:space="preserve">
<value>Deine {0}-Runtime-Version ist zu alt!</value>
<value>Deine {0} Laufzeitversion ist zu alt!</value>
<comment>{0} will be replaced by runtime name (e.g. "Mono")</comment>
</data>
<data name="Starting" xml:space="preserve">
@@ -311,7 +311,7 @@ StackTrace:
<comment>Please note that this translation should end with space</comment>
</data>
<data name="UserInputSteamGuard" xml:space="preserve">
<value>Bitte gib den Steam Guard Authentifikator-Code ein, der dir per E-Mail geschickt wurde: </value>
<value>Bitte gib den Steam Guard Authentifikator-Code ein, der dir per E-Mail zugeschickt wurde: </value>
<comment>Please note that this translation should end with space</comment>
</data>
<data name="UserInputSteamLogin" xml:space="preserve">
@@ -319,7 +319,7 @@ StackTrace:
<comment>Please note that this translation should end with space</comment>
</data>
<data name="UserInputSteamParentalPIN" xml:space="preserve">
<value>Bitte geben deinen Steam-Familienansicht-PIN ein: </value>
<value>Bitte geben die PIN deiner Steam-Familienansicht ein: </value>
<comment>Please note that this translation should end with space</comment>
</data>
<data name="UserInputSteamPassword" xml:space="preserve">
@@ -376,11 +376,11 @@ StackTrace:
<comment>{0} will be replaced by bot's name query (string)</comment>
</data>
<data name="BotStatusOverview" xml:space="preserve">
<value>Es laufen gerade {0}/{1} Bots, mit insgesamt {2} Spielen ({3} Karten) übrig zum Sammlen.</value>
<value>Es arbeiten derzeit {0}/{1} Bots, mit insgesamt {2} Spielen ({3} Karten) übrig zum Sammlen.</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">
<value>Bot idled Spiel: {0} ({1}, {2} Karten verbleidend) von insgesamt {3} Spielen ({4} Karten) verbleibend zum Idlen (~{5} verbleibend).</value>
<value>Bot idled Spiel: {0} ({1}, {2} Karten verbleibend) von insgesamt {3} Spiel(en) ({4} Karten) verbleibend zum Idlen (~{5}).</value>
<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 built from TimeSpan* translation parts</comment>
</data>
<data name="BotStatusIdlingList" xml:space="preserve">
@@ -394,18 +394,18 @@ StackTrace:
<value>Überprüfe andere Abzeichenseiten...</value>
</data>
<data name="ChosenFarmingAlgorithm" xml:space="preserve">
<value>Gewählter Idle-Algorithmus: {0}</value>
<value>Gewählter Sammel-Algorithmus: {0}</value>
<comment>{0} will be replaced by the name of chosen idling algorithm</comment>
</data>
<data name="Done" xml:space="preserve">
<value>Erledigt!</value>
</data>
<data name="GamesToIdle" xml:space="preserve">
<value>Wir haben noch insgesamt {0} Spiele ({1} Karten) zu idlen (~{2} verbleibend)...</value>
<value>Wir haben noch insgesamt bei {0} Spiel(en) ({1} Karte[n]) etwas zu sammeln (~{2} verbleibend)...</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 built from TimeSpan* translation parts</comment>
</data>
<data name="IdlingFinished" xml:space="preserve">
<value>Idlen abgeschlossen!</value>
<value>Sammeln abgeschlossen!</value>
</data>
<data name="IdlingFinishedForGame" xml:space="preserve">
<value>Idlen abgeschlossen: {0} ({1}) nach {2} Spielzeit!</value>
@@ -416,14 +416,14 @@ StackTrace:
<comment>{0} will be replaced by list of the games (IDs, numbers), separated by a comma</comment>
</data>
<data name="IdlingStatusForGame" xml:space="preserve">
<value>Status zum Idlen von {0} ({1}): {2} Karten verbleibend</value>
<value>Status zum Sammeln von {0} ({1}): {2} Karte(en) verbleibend</value>
<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</comment>
</data>
<data name="IdlingStopped" xml:space="preserve">
<value>Idlen gestoppt!</value>
</data>
<data name="IgnoredStickyPauseEnabled" xml:space="preserve">
<value>Ignoriere diese Anfrage, da die "Anhaltende Pause" aktiviert ist!</value>
<value>Ignoriere diese Anfrage, da die Anhaltende Pause aktiviert ist!</value>
</data>
<data name="NothingToIdle" xml:space="preserve">
<value>Wir haben auf diesem Benutzerkonto nichts zum Sammeln!</value>
@@ -433,14 +433,14 @@ StackTrace:
<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>Idle jetzt: {0}</value>
<value>Sammel jetzt: {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>Spielen ist zurzeit nicht möglich, wir versuchen es später wieder!</value>
</data>
<data name="StillIdling" xml:space="preserve">
<value>Idle immer noch: {0} ({1})</value>
<value>Sammel immer noch: {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">
@@ -503,7 +503,7 @@ StackTrace:
<value>Automatisches Sammeln wird wieder fortgesetzt!</value>
</data>
<data name="BotAutomaticIdlingPausedAlready" xml:space="preserve">
<value>Automatisches Idlen ist bereits pausiert!</value>
<value>Automatisches Sammeln ist bereits pausiert!</value>
</data>
<data name="BotAutomaticIdlingPausedWithCountdown" xml:space="preserve">
<value>Automatisches Sammeln ist nun pausiert! Du hast {0} Minuten, um ein Spiel zu starten.</value>
@@ -526,10 +526,10 @@ StackTrace:
<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>Roboterexemplar nicht gestartet, weil es in der Konfigurations-Datei deaktiviert ist!</value>
<value>Bot-Instanz nicht gestartet, da es in der Konfigurations-Datei deaktiviert ist!</value>
</data>
<data name="BotInvalidAuthenticatorDuringLogin" xml:space="preserve">
<value>ZweiFaktorCodeDiskrepanz Fehlercode {0} Mal hintereinander erhalten, dies weist meist auf ungültige ASF 2FA Anmeldedaten hin. Abbruch!</value>
<value>Der Fehler "TwoFactorCodeMismatch" ist {0} Mal in Folge aufgetreten. Dies weißt fast immer auf ungültige ASF 2FA Anmeldedaten hin. Vorgang wird abgebrochen!</value>
<comment>{0} will be replaced by maximum allowed number of failed 2FA attempts</comment>
</data>
<data name="BotLoggedOff" xml:space="preserve">
@@ -540,17 +540,16 @@ StackTrace:
<value>Erfolgreich angemeldet!</value>
</data>
<data name="BotLoggingIn" xml:space="preserve">
<value>Anmelden...</value>
<value>Melde an...</value>
</data>
<data name="BotLogonSessionReplaced" xml:space="preserve">
<value>Dieses Benutzerkonto scheint bereits von einer anderen ASF-Instanz verwendet zu werden, welches ein undefiniertes Verhalten ist, verweigere es weiter laufen zu lassen!</value>
<value>Dieses Benutzerkonto scheint bereits von einer anderen ASF-Instanz verwendet zu werden, welches ein undefiniertes Verhalten ist. Verweigere, es weiter laufen zu lassen!</value>
</data>
<data name="BotLootingFailed" xml:space="preserve">
<value>Senden des Handelsangebots fehlgeschlagen!</value>
</data>
<data name="BotLootingMasterNotDefined" xml:space="preserve">
<value>Handelsanfrage konnte nicht gesendet werden, weil die SteamMasterID nicht definiert ist!</value>
<comment>SteamMasterID is name of bot config property, it should not be translated</comment>
<value>Handel konnte nicht gesendet werden, weil kein Benutzer mit Master-Berechtigung festgelegt ist!</value>
</data>
<data name="BotLootingNoLootableTypes" xml:space="preserve">
<value>Du hast keine Plünderarten festgelegt!</value>
@@ -596,20 +595,20 @@ StackTrace:
<comment>{0} will be replaced by cd-key (string), {1} will be replaced by status string</comment>
</data>
<data name="BotRedeemWithItems" xml:space="preserve">
<value>Key: {0} | Status: {1} | Einzelheiten: {2}</value>
<value>Key: {0} | Status: {1} | Gegenstände: {2}</value>
<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>Abgelaufener Login-Key entfernt!</value>
<value>Abgelaufenen Anmelde-Schlüssel entfernt!</value>
</data>
<data name="BotStatusNotIdling" xml:space="preserve">
<value>Bot sammelt überhaupt nichts.</value>
<value>Bot sammelt nichts.</value>
</data>
<data name="BotStatusLimited" xml:space="preserve">
<value>Bot ist eingeschränkt und erhält keine Karten durch's Sammeln.</value>
</data>
<data name="BotStatusNotConnected" xml:space="preserve">
<value>Bot ist nicht verbunden.</value>
<data name="BotStatusConnecting" xml:space="preserve">
<value>Bot stellt eine Verbindung zum Steam Netzwerk her.</value>
</data>
<data name="BotStatusNotRunning" xml:space="preserve">
<value>Bot läuft nicht.</value>
@@ -714,4 +713,7 @@ StackTrace:
<value>Bereits im Besitz: {0}</value>
<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>Zugang verweigert!</value>
</data>
</root>

View File

@@ -483,10 +483,7 @@ StackTrace:
<data name="BotLootingFailed" xml:space="preserve">
<value>Η προσφορά ανταλλαγής απέτυχε!</value>
</data>
<data name="BotLootingMasterNotDefined" xml:space="preserve">
<value>Η ανταλλαγή δεν στάλθηκε επειδή το SteamMasterID δεν έχει οριστεί!</value>
<comment>SteamMasterID is name of bot config property, it should not be translated</comment>
</data>
<data name="BotLootingNoLootableTypes" xml:space="preserve">
<value>Δεν έχετε καθορίσει κανένα τύπο λεηλασίας!</value>
</data>
@@ -585,4 +582,5 @@ StackTrace:
</root>

View File

@@ -184,7 +184,7 @@ Trazo de pila:
<value>¡No se pudo comprobar la última versión!</value>
</data>
<data name="ErrorUpdateNoAssetForThisBinary" xml:space="preserve">
<value>¡No se puede continuar con la actualización porque no hay ningún recurso que se relacione con el binario que se está ejecutando! ¡Por favor asegúrese que el binario de ASF esté nombrado correctamente!</value>
<value>¡No se puede proceder con la actualización porque no hay ningún objeto que se relacione con el binario ejecutándose! ¡Por favor asegúrese que el binario de ASF esté nombrado correctamente!</value>
</data>
<data name="ErrorUpdateNoAssets" xml:space="preserve">
<value>¡No se puede continuar con una actualización porque esa versión no incluye ningún recurso!</value>
@@ -547,10 +547,7 @@ Trazo de pila:
<data name="BotLootingFailed" xml:space="preserve">
<value>Se ha producido un error al realizar el intercambio!</value>
</data>
<data name="BotLootingMasterNotDefined" xml:space="preserve">
<value>¡El intercambio no pudo ser enviado porque SteamMasterID no está definido!</value>
<comment>SteamMasterID is name of bot config property, it should not be translated</comment>
</data>
<data name="BotLootingNoLootableTypes" xml:space="preserve">
<value>¡No tienes ningún tipo de conjunto que puedas traspasar!</value>
</data>
@@ -607,9 +604,7 @@ Trazo de pila:
<data name="BotStatusLimited" xml:space="preserve">
<value>El bot esta limitado y no puede conseguir ningún cromo a través de la recolección.</value>
</data>
<data name="BotStatusNotConnected" xml:space="preserve">
<value>El bot no está conectado.</value>
</data>
<data name="BotStatusNotRunning" xml:space="preserve">
<value>El Bot no se está ejecutando.</value>
</data>
@@ -713,4 +708,5 @@ Trazo de pila:
<value>Ya posees: {0}</value>
<comment>{0} will be replaced by game's ID (number), {1} will be replaced by game's name</comment>
</data>
</root>

View File

@@ -287,7 +287,7 @@
</data>
<data name="IdlingStatusForGame" xml:space="preserve">
<value>Idlauksen tila kohteelle {0} ({1}): {2} korttia jäljellä</value>
<value>Idlauksessa {0} ({1}): {2} korttia jäljellä</value>
<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</comment>
</data>
<data name="IdlingStopped" xml:space="preserve">
@@ -439,4 +439,5 @@
</root>

View File

@@ -0,0 +1,715 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" id="root">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace"/>
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0"/>
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string"/>
<xsd:attribute name="type" type="xsd:string"/>
<xsd:attribute name="mimetype" type="xsd:string"/>
<xsd:attribute ref="xml:space"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string"/>
<xsd:attribute name="name" type="xsd:string"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1"/>
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2"/>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1"/>
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3"/>
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4"/>
<xsd:attribute ref="xml:space"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1"/>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required"/>
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="AcceptingTrade" xml:space="preserve">
<value>Échange accepté : {0}</value>
<comment>{0} will be replaced by trade number</comment>
</data>
<data name="AutoUpdateCheckInfo" xml:space="preserve">
<value>ASF recherchera automatiquement de nouvelles mises à jour toutes les {0} heures.</value>
<comment>{0} will be replaced by number of hours</comment>
</data>
<data name="Content" xml:space="preserve">
<value>Contenu :
{0}</value>
<comment>{0} will be replaced by content string. Please note that this string should include newline for formatting.</comment>
</data>
<data name="ErrorConfigPropertyInvalid" xml:space="preserve">
<value>Propriété {0} configuré nest pas valide : {1}</value>
<comment>{0} will be replaced by name of the configuration property, {1} will be replaced by invalid value</comment>
</data>
<data name="ErrorEarlyFatalExceptionInfo" xml:space="preserve">
<value>ASF V{0} a rencontré une exception fatale avant même que le module de base de journalisation ait le temps de s'initialiser !</value>
<comment>{0} will be replaced by version number</comment>
</data>
<data name="ErrorEarlyFatalExceptionPrint" xml:space="preserve">
<value>Exception : {0}() {1}
StackTrace :
{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>Arret avec un code derreur non nul !</value>
</data>
<data name="ErrorFailingRequest" xml:space="preserve">
<value>Échec de la requête : {0}</value>
<comment>{0} will be replaced by URL of the request</comment>
</data>
<data name="ErrorGlobalConfigNotLoaded" xml:space="preserve">
<value>La configuration globale n'a pu être chargée. Merci de vérifier que {0} existe et est valide ! Suivez le guide de configuration sur le wiki en cas de doute.</value>
<comment>{0} will be replaced by file's path</comment>
</data>
<data name="ErrorIsInvalid" xml:space="preserve">
<value>{0} est invalide!</value>
<comment>{0} will be replaced by object's name</comment>
</data>
<data name="ErrorMobileAuthenticatorInvalidDeviceID" xml:space="preserve">
<value>Refus dexécution de cette fonction en raison d'un DeviceID invalide dans ASF 2FA !</value>
</data>
<data name="ErrorNoBotsDefined" xml:space="preserve">
<value>Aucun bot défini, avez-vous omis de configurer ASF?</value>
</data>
<data name="ErrorObjectIsNull" xml:space="preserve">
<value>{0} est invalide !</value>
<comment>{0} will be replaced by object's name</comment>
</data>
<data name="ErrorParsingObject" xml:space="preserve">
<value>Lanalyse de {0} a échoué !</value>
<comment>{0} will be replaced by object's name</comment>
</data>
<data name="ErrorRemovingOldBinary" xml:space="preserve">
<value>Impossible de supprimer l'ancien binaire d'ASF, merci de supprimer {0} manuellement afin que la fonction de mise à jour puisse fonctionner !</value>
<comment>{0} will be replaced by file's path</comment>
</data>
<data name="ErrorRequestFailedTooManyTimes" xml:space="preserve">
<value>La requête a échoué après {0} tentatives !</value>
<comment>{0} will be replaced by maximum number of tries</comment>
</data>
<data name="ErrorUpdateCheckFailed" xml:space="preserve">
<value>Impossible de vérifier la dernière version !</value>
</data>
<data name="ErrorUpdateNoAssetForThisBinary" xml:space="preserve">
<value>Impossible de procéder à la mise à jour car il ny a aucune correspondance au binaire en cours dexécution ! Veuillez vous assurer que votre binaire ASF est nommé de manière appropriée !</value>
</data>
<data name="ErrorUpdateNoAssets" xml:space="preserve">
<value>Impossible de procéder à une mise à jour parce que cette version ne contient aucun fichier !</value>
</data>
<data name="ErrorUserInputRunningInHeadlessMode" xml:space="preserve">
<value>Réception d'une demande d'entrée utilisateur, mais le processus en cours tourne en mode non-interactif!</value>
</data>
<data name="ErrorWCFAccessDenied" xml:space="preserve">
<value>Refus de traiter la requête car le paramètre SteamOwnerID nest pas défini !</value>
<comment>SteamOwnerID is name of bot config property, it should not be translated</comment>
</data>
<data name="Exiting" xml:space="preserve">
<value>Fermeture...</value>
</data>
<data name="WarningFailed" xml:space="preserve">
<value>Échec!</value>
</data>
<data name="GlobalConfigChanged" xml:space="preserve">
<value>Le fichier de configuration général a été modifié!</value>
</data>
<data name="ErrorGlobalConfigRemoved" xml:space="preserve">
<value>Le fichier de configuration générale a été supprimé!</value>
</data>
<data name="IgnoringTrade" xml:space="preserve">
<value>Offre ignorée : {0}</value>
<comment>{0} will be replaced by trade number</comment>
</data>
<data name="LoggingIn" xml:space="preserve">
<value>Connexion à {0}...</value>
<comment>{0} will be replaced by service's name</comment>
</data>
<data name="NoBotsAreRunning" xml:space="preserve">
<value>Aucun bot en fonctionnement, fermeture en cours...</value>
</data>
<data name="RefreshingOurSession" xml:space="preserve">
<value>Rafraîchissement de notre session !</value>
</data>
<data name="RejectingTrade" xml:space="preserve">
<value>Offre rejetée : {0}</value>
<comment>{0} will be replaced by trade number</comment>
</data>
<data name="Restarting" xml:space="preserve">
<value>Redémarrage...</value>
</data>
<data name="WarningRuntimeUnsupported" xml:space="preserve">
<value>ASF a détecté un environnement d'exécution en cours non pris en charge, le programme pourrait NE PAS fonctionner. Vous le lancez à vos propres risques et périls, et sans aide !</value>
</data>
<data name="RuntimeVersionComparison" xml:space="preserve">
<value>Version requise : {0} | Version trouvée : {1}</value>
<comment>{0} will be replaced by required version, {1} will be replaced by current version</comment>
</data>
<data name="RuntimeVersionOK" xml:space="preserve">
<value>La version {0} de votre environnement d'exécution est OK.</value>
<comment>{0} will be replaced by runtime name (e.g. "Mono")</comment>
</data>
<data name="WarningRuntimeVersionTooOld" xml:space="preserve">
<value>La version {0} de votre environnement d'exécution est trop ancienne!</value>
<comment>{0} will be replaced by runtime name (e.g. "Mono")</comment>
</data>
<data name="Starting" xml:space="preserve">
<value>Démarrage...</value>
</data>
<data name="StatusCode" xml:space="preserve">
<value>Statut du code : {0}</value>
<comment>{0} will be replaced by status code number/name</comment>
</data>
<data name="Success" xml:space="preserve">
<value>Succès !</value>
</data>
<data name="TimeSpanDay" xml:space="preserve">
<value>1 jour</value>
</data>
<data name="TimeSpanDays" xml:space="preserve">
<value>{0} jours</value>
<comment>{0} will be replaced by number of days</comment>
</data>
<data name="TimeSpanHour" xml:space="preserve">
<value>1 heure</value>
</data>
<data name="TimeSpanHours" xml:space="preserve">
<value>{0} heures</value>
<comment>{0} will be replaced by number of hours</comment>
</data>
<data name="TimeSpanMinute" xml:space="preserve">
<value>1 minute</value>
</data>
<data name="TimeSpanMinutes" xml:space="preserve">
<value>{0} minutes</value>
<comment>{0} will be replaced by number of minutes</comment>
</data>
<data name="TimeSpanSecond" xml:space="preserve">
<value>1 seconde</value>
</data>
<data name="TimeSpanSeconds" xml:space="preserve">
<value>{0} secondes</value>
<comment>{0} will be replaced by number of seconds</comment>
</data>
<data name="UnlockingParentalAccount" xml:space="preserve">
<value>Déverrouillage du compte parental...</value>
</data>
<data name="UpdateCheckingNewVersion" xml:space="preserve">
<value>Recherche d'une nouvelle version...</value>
</data>
<data name="UpdateDownloadingNewVersion" xml:space="preserve">
<value>Téléchargement de la nouvelle version en cours... En attendant, vous pouvez faire un don si vous appréciez le travail effectué ! :)</value>
</data>
<data name="UpdateFinished" xml:space="preserve">
<value>Mise à jour terminée !</value>
</data>
<data name="UpdateNewVersionAvailable" xml:space="preserve">
<value>Une nouvelle version d'ASF est disponible ! Envisagez de la mettre à jour !</value>
</data>
<data name="UpdateVersionInfo" xml:space="preserve">
<value>Version locale : {0} | Version à distance : {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>Veuillez entrer l'ID de votre périphérique mobile d'authentification (« android : » inclus) : </value>
<comment>Please note that this translation should end with space</comment>
</data>
<data name="UserInputSteam2FA" xml:space="preserve">
<value>Veuillez entrer votre code 2FA généré par votre application d'authentification de Steam: </value>
<comment>Please note that this translation should end with space</comment>
</data>
<data name="UserInputSteamGuard" xml:space="preserve">
<value>Veuillez entrer le code dauthentification SteamGuard qui a été envoyé sur votre e-mail : </value>
<comment>Please note that this translation should end with space</comment>
</data>
<data name="UserInputSteamLogin" xml:space="preserve">
<value>Veuillez entrer votre nom dutilisateur Steam : </value>
<comment>Please note that this translation should end with space</comment>
</data>
<data name="UserInputSteamParentalPIN" xml:space="preserve">
<value>Veuillez entrer le code du mode famille: </value>
<comment>Please note that this translation should end with space</comment>
</data>
<data name="UserInputSteamPassword" xml:space="preserve">
<value>Veuillez entrer votre mot de passe Steam : </value>
<comment>Please note that this translation should end with space</comment>
</data>
<data name="UserInputUnknown" xml:space="preserve">
<value>Veuillez entrer la valeur non documentée de {0} : </value>
<comment>{0} will be replaced by property name. Please note that this translation should end with space</comment>
</data>
<data name="UserInputWCFHost" xml:space="preserve">
<value>Veuillez entrer votre hôte WCF : </value>
<comment>Please note that this translation should end with space</comment>
</data>
<data name="WarningUnknownValuePleaseReport" xml:space="preserve">
<value>{0} a reçu une valeur inconnue, veuillez le signaler : {1}</value>
<comment>{0} will be replaced by object's name, {1} will be replaced by value for that object</comment>
</data>
<data name="WarningTooManyGamesToPlay" xml:space="preserve">
<value>Jouer à plus de {0} jeux en même temps nest pas actuelllement possible, seules les {0} premières entrées de {1} seront utilisées !</value>
<comment>{0} will be replaced by max number of games, {1} will be replaced by name of the configuration property</comment>
</data>
<data name="WarningWCFIgnoringCommand" xml:space="preserve">
<value>Commande WCF ignorée car --client na pas été spécifié : {0}</value>
<comment>{0} will be replaced by WCF command</comment>
</data>
<data name="ErrorWCFAddressAccessDeniedException" xml:space="preserve">
<value>Le service WCF na pas pu être démarré en raison d'un refus d'accès AddressAccessDeniedException ! Si vous souhaitez utiliser le service WCF fourni par ASF, envisagez de lancer ASF en tant quadministrateur ou en donnant des autorisations adéquates !</value>
</data>
<data name="WCFAnswered" xml:space="preserve">
<value>Réponse à la commande WCF : {0} avec : {1}</value>
<comment>{0} will be replaced by WCF command, {1} will be replaced by WCF answer</comment>
</data>
<data name="WCFReady" xml:space="preserve">
<value>Serveur WCF prêt !</value>
</data>
<data name="WCFResponseReceived" xml:space="preserve">
<value>Réponse WCF reçue : {0}</value>
<comment>{0} will be replaced by WCF response</comment>
</data>
<data name="WCFSendingCommand" xml:space="preserve">
<value>Envoi de la commande : {0} au serveur WCF sur {1}...</value>
<comment>{0} will be replaced by WCF command, {1} will be replaced by WCF hostname</comment>
</data>
<data name="WCFStarting" xml:space="preserve">
<value>Démarrage du serveur WCF sur {0}...</value>
<comment>{0} will be replaced by WCF hostname</comment>
</data>
<data name="BotAlreadyStopped" xml:space="preserve">
<value>Ce bot est déjà arrêté !</value>
</data>
<data name="BotNotFound" xml:space="preserve">
<value>Aucun bot nommé {0} n'a été trouvé!</value>
<comment>{0} will be replaced by bot's name query (string)</comment>
</data>
<data name="BotStatusOverview" xml:space="preserve">
<value>Il y a {0}/{1} bots en cours dexécution, avec un total de {2} jeux ({3} cartes) restants à collecter.</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">
<value>Le bot collecte les cartes du jeu : {0} ({1}, {2} cartes restantes à obtenir) sur un total de {3} jeux ({4} cartes) à collecter (~{5} restantes).</value>
<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 built from TimeSpan* translation parts</comment>
</data>
<data name="BotStatusIdlingList" xml:space="preserve">
<value>Le bot collecte les cartes des jeux : {0} sur un total de {1} jeux ({2} cartes) restants à traiter (~{3} restantes).</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 built from TimeSpan* translation parts</comment>
</data>
<data name="CheckingFirstBadgePage" xml:space="preserve">
<value>Vérification de la première page des badges...</value>
</data>
<data name="CheckingOtherBadgePages" xml:space="preserve">
<value>Vérification des autres pages de badges...</value>
</data>
<data name="ChosenFarmingAlgorithm" xml:space="preserve">
<value>Algorithme de collecte choisi : {0}</value>
<comment>{0} will be replaced by the name of chosen idling algorithm</comment>
</data>
<data name="Done" xml:space="preserve">
<value>Accompli !</value>
</data>
<data name="GamesToIdle" xml:space="preserve">
<value>Nous avons un total de {0} jeux ({1} cartes) restants à collecter (~{2} restantes)...</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 built from TimeSpan* translation parts</comment>
</data>
<data name="IdlingFinished" xml:space="preserve">
<value>Collecte terminée !</value>
</data>
<data name="IdlingFinishedForGame" xml:space="preserve">
<value>Collecte terminée : {0} ({1}) après {2} de temps de jeu !</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 built from TimeSpan* translation parts</comment>
</data>
<data name="IdlingFinishedForGames" xml:space="preserve">
<value>Collecte terminée des jeux : {0}</value>
<comment>{0} will be replaced by list of the games (IDs, numbers), separated by a comma</comment>
</data>
<data name="IdlingStatusForGame" xml:space="preserve">
<value>Progression de la collecte pour {0} ({1}) : {2} cartes restantes</value>
<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</comment>
</data>
<data name="IdlingStopped" xml:space="preserve">
<value>Collecte interrompue !</value>
</data>
<data name="IgnoredStickyPauseEnabled" xml:space="preserve">
<value>Requête ignorée car la pause permanente est active !</value>
</data>
<data name="NothingToIdle" xml:space="preserve">
<value>Nous navons rien à collecter sur ce compte !</value>
</data>
<data name="NowIdling" xml:space="preserve">
<value>Collecte en cours : {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>Collecte en cours : {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>Le jeu est actuellement indisponible, nous réessayerons plus tard !</value>
</data>
<data name="StillIdling" xml:space="preserve">
<value>Collecte toujours en cours : {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>Collecte toujours en cours : {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>Collecte arrêtée : {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>Collecte arrêtée : {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">
<value>Commande inconnue !</value>
</data>
<data name="WarningCouldNotCheckBadges" xml:space="preserve">
<value>Impossible d'obtenir les informations des badges, nous réessayerons plus tard!</value>
</data>
<data name="WarningCouldNotCheckCardsStatus" xml:space="preserve">
<value>Impossible de vérifier les cartes restantes pour : {0} ({1}), nous réessayerons plus tard !</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>Acceptation du cadeau : {0}...</value>
<comment>{0} will be replaced by giftID (number)</comment>
</data>
<data name="BotAccountLimited" xml:space="preserve">
<value>Ce compte est limité, le processus de collecte est impossible tant que la restriction n'a pas été levée !</value>
</data>
<data name="BotAddLicense" xml:space="preserve">
<value>ID : {0} | Statut : {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} | Statut : {1} | Items : {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>Ce bot est déjà lancé !</value>
</data>
<data name="BotAuthenticatorConverting" xml:space="preserve">
<value>Conversion de .maFile au format ASF...</value>
</data>
<data name="BotAuthenticatorImportFinished" xml:space="preserve">
<value>Importation de l'authentificateur mobile effectuée avec succès!</value>
</data>
<data name="BotAuthenticatorInvalidDeviceID" xml:space="preserve">
<value>Votre DeviceID est incorrect ou nexiste pas !</value>
</data>
<data name="BotAuthenticatorToken" xml:space="preserve">
<value>Code 2FA : {0}</value>
<comment>{0} will be replaced by generated 2FA token (string)</comment>
</data>
<data name="BotAutomaticIdlingNowPaused" xml:space="preserve">
<value>La collecte automatique est maintenant suspendue !</value>
</data>
<data name="BotAutomaticIdlingNowResumed" xml:space="preserve">
<value>La collecte automatique a maintenant repris !</value>
</data>
<data name="BotAutomaticIdlingPausedAlready" xml:space="preserve">
<value>La collecte automatique est déjà en pause !</value>
</data>
<data name="BotAutomaticIdlingPausedWithCountdown" xml:space="preserve">
<value>La collecte automatique est maintenant en pause ! Vous avez {0} minutes pour démarrer un jeu.</value>
<comment>{0} will be replaced by number of minutes</comment>
</data>
<data name="BotAutomaticIdlingResumedAlready" xml:space="preserve">
<value>La collecte automatique a déjà repris !</value>
</data>
<data name="BotConnected" xml:space="preserve">
<value>Connecté à Steam !</value>
</data>
<data name="BotDisconnected" xml:space="preserve">
<value>Déconnecté de Steam !</value>
</data>
<data name="BotDisconnecting" xml:space="preserve">
<value>Déconnexion...</value>
</data>
<data name="BotEncryptedPassword" xml:space="preserve">
<value>[{0}] mot de passe : {1}</value>
<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>Ce bot n'a pas été lancé car l'option de démarrage est désactivée dans son fichier de configuration !</value>
</data>
<data name="BotInvalidAuthenticatorDuringLogin" xml:space="preserve">
<value>Réception du code d'erreur TwoFactorCodeMismatch {0} fois daffilée, cela indique presque toujours des données d'authentification ASF 2FA invalides, abandon !</value>
<comment>{0} will be replaced by maximum allowed number of failed 2FA attempts</comment>
</data>
<data name="BotLoggedOff" xml:space="preserve">
<value>Déconnecté de Steam : {0}</value>
<comment>{0} will be replaced by logging off reason (string)</comment>
</data>
<data name="BotLoggedOn" xml:space="preserve">
<value>Connexion réussie !</value>
</data>
<data name="BotLoggingIn" xml:space="preserve">
<value>Connexion en cours...</value>
</data>
<data name="BotLogonSessionReplaced" xml:space="preserve">
<value>Ce compte semble être utilisé dans une autre instance ASF, ce qui peut entraîner un comportement indéfini, fonctionnement interrompu !</value>
</data>
<data name="BotLootingFailed" xml:space="preserve">
<value>L'offre d'échange a échoué!</value>
</data>
<data name="BotLootingNoLootableTypes" xml:space="preserve">
<value>Vous n'avez aucun type d'objets à récupérer de configuré !</value>
</data>
<data name="BotLootingNowDisabled" xml:space="preserve">
<value>La récupération des cartes est maintenant désactivée !</value>
</data>
<data name="BotLootingNowEnabled" xml:space="preserve">
<value>La récupération des cartes est maintenant activée !</value>
</data>
<data name="BotLootingSuccess" xml:space="preserve">
<value>Offre d'échange envoyée avec succès !</value>
</data>
<data name="BotLootingTemporarilyDisabled" xml:space="preserve">
<value>La récupération des cartes est temporairement désactivée !</value>
</data>
<data name="BotLootingYourself" xml:space="preserve">
<value>Vous ne pouvez pas lancer la récupération des cartes sur vous-même !</value>
</data>
<data name="BotNoASFAuthenticator" xml:space="preserve">
<value>Ce bot na pas ASF 2FA d'activé ! Avez-vous oublié dimporter votre authentificateur en tant que ASF 2FA ?</value>
</data>
<data name="BotNotConnected" xml:space="preserve">
<value>Ce bot nest pas connecté !</value>
</data>
<data name="BotNotOwnedYet" xml:space="preserve">
<value>Non possédé : {0}</value>
<comment>{0} will be replaced by query (string)</comment>
</data>
<data name="BotOwnedAlreadyWithName" xml:space="preserve">
<value>Possède déjà : {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="BotRateLimitExceeded" xml:space="preserve">
<value>Fréquence limite dépassée, nouvelle tentative après {0} minutes d'attente...</value>
<comment>{0} will be replaced by number of minutes</comment>
</data>
<data name="BotReconnecting" xml:space="preserve">
<value>Reconnexion...</value>
</data>
<data name="BotRedeem" xml:space="preserve">
<value>Clé : {0} | Statut : {1}</value>
<comment>{0} will be replaced by cd-key (string), {1} will be replaced by status string</comment>
</data>
<data name="BotRedeemWithItems" xml:space="preserve">
<value>Clé : {0} | Statut : {1} | Items : {2}</value>
<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>La clé de connexion expirée a été supprimée!</value>
</data>
<data name="BotStatusNotIdling" xml:space="preserve">
<value>Le bot n'est pas en cours de collecte.</value>
</data>
<data name="BotStatusLimited" xml:space="preserve">
<value>Le bot est limité et ne permet pas la collecte de carte.</value>
</data>
<data name="BotStatusConnecting" xml:space="preserve">
<value>Bot se connecte au réseau Steam.</value>
</data>
<data name="BotStatusNotRunning" xml:space="preserve">
<value>Le bot nest pas en cours dexécution.</value>
</data>
<data name="BotStatusPaused" xml:space="preserve">
<value>Le bot est en pause ou en cours dexécution en mode manuel.</value>
</data>
<data name="BotStatusPlayingNotAvailable" xml:space="preserve">
<value>Le bot est actuellement utilisé.</value>
</data>
<data name="BotUnableToConnect" xml:space="preserve">
<value>Impossible de se connecter à Steam : {0}</value>
<comment>{0} will be replaced by failure reason (string)</comment>
</data>
<data name="BotUnableToLogin" xml:space="preserve">
<value>Impossible de se connecter à 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">
<value>{0} est vide !</value>
<comment>{0} will be replaced by object's name</comment>
</data>
<data name="UnusedKeys" xml:space="preserve">
<value>Clés non utilisées : {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>Échec dû à une erreur : {0}</value>
<comment>{0} will be replaced by failure reason (string)</comment>
</data>
<data name="BotConnectionLost" xml:space="preserve">
<value>Connexion au réseau Steam perdue. Reconnexion...</value>
</data>
<data name="BotAccountFree" xml:space="preserve">
<value>Le compte n'est plus occupé : reprise du processus de collecte!</value>
</data>
<data name="BotAccountOccupied" xml:space="preserve">
<value>Ce compte est actuellement utilisé : ASF reprendra la collecte quand celui-ci sera libre...</value>
</data>
<data name="BotAutomaticIdlingPauseTimeout" xml:space="preserve">
<value>La bibliothèque partagée n'a pas été lancée dans le temps imparti, reprise du processus de collecte !</value>
</data>
<data name="BotConnecting" xml:space="preserve">
<value>Connexion...</value>
</data>
<data name="BotHeartBeatFailed" xml:space="preserve">
<value>Impossible de déconnecter le client. Abandon de cette instance de bot !</value>
</data>
<data name="BotSteamDirectoryInitializationFailed" xml:space="preserve">
<value>Impossible d'initialiser SteamDirectory : la connexion au réseau Steam pourrait prendre beaucoup plus longtemps que dhabitude !</value>
</data>
<data name="BotStopping" xml:space="preserve">
<value>Arrêt...</value>
</data>
<data name="ErrorBotConfigInvalid" xml:space="preserve">
<value>La configuration de votre bot nest pas valide. Veuillez vérifier le contenu de {0} et réessayez !</value>
<comment>{0} will be replaced by file's path</comment>
</data>
<data name="ErrorDatabaseInvalid" xml:space="preserve">
<value>La base de données persistante n'a pu être chargée, si le problème persiste, merci de supprimer {0} afin de la recréer!</value>
<comment>{0} will be replaced by file's path</comment>
</data>
<data name="Initializing" xml:space="preserve">
<value>Initialisation de {0}...</value>
<comment>{0} will be replaced by service name that is being initialized</comment>
</data>
<data name="WarningPrivacyPolicy" xml:space="preserve">
<value>Veuillez consulter sur le wiki notre section politique de confidentialité, si vous vous souciez de ce que fait ASF !</value>
</data>
<data name="Welcome" xml:space="preserve">
<value>Il semble que c'est la première fois que vous lancez le programme, bienvenue!</value>
</data>
<data name="ErrorInvalidCurrentCulture" xml:space="preserve">
<value>Votre paramètre CurrentCulture indiqué nest pas valide, ASF continuera à fonctionner avec celui par défaut !</value>
</data>
<data name="TranslationIncomplete" xml:space="preserve">
<value>ASF va tenter dutiliser votre langage préféré {0}, mais la traduction dans ce langage est achevée seulement à {1}. Peut-être vous pourriez nous aider à améliorer la traduction d'ASF pour votre langue ?</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>La collecte de {0} ({1}) est désactivée temporairement, car ASF est incapable de lancer ce jeu actuellement.</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 a détecté une erreur dans l'appID courant {0} ({1}) et utilisera donc l'appID {2} à la place.</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">
<value>{0} V{1}</value>
<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>Ce compte est verrouillé, le processus de collecte est définitivement indisponible !</value>
</data>
<data name="BotStatusLocked" xml:space="preserve">
<value>Le bot est verrouillé et ne permet pas la collecte de carte.</value>
</data>
<data name="ErrorFunctionOnlyInHeadlessMode" xml:space="preserve">
<value>Cette fonction est disponible uniquement en mode non interactif !</value>
</data>
<data name="BotOwnedAlready" xml:space="preserve">
<value>Déjà possédé : {0}</value>
<comment>{0} will be replaced by game's ID (number), {1} will be replaced by game's name</comment>
</data>
</root>

View File

@@ -548,10 +548,7 @@ StackTrace :
<data name="BotLootingFailed" xml:space="preserve">
<value>L'offre d'échange a échoué !</value>
</data>
<data name="BotLootingMasterNotDefined" xml:space="preserve">
<value>L'offre n'a pu être envoyée car le paramètre SteamMasterID nest pas défini !</value>
<comment>SteamMasterID is name of bot config property, it should not be translated</comment>
</data>
<data name="BotLootingNoLootableTypes" xml:space="preserve">
<value>Vous n'avez aucun type d'objets à récupérer de configuré !</value>
</data>
@@ -608,8 +605,8 @@ StackTrace :
<data name="BotStatusLimited" xml:space="preserve">
<value>Le bot est limité et ne permet pas la collecte de carte.</value>
</data>
<data name="BotStatusNotConnected" xml:space="preserve">
<value>Le bot nest pas connecté.</value>
<data name="BotStatusConnecting" xml:space="preserve">
<value>Bot se connecte au réseau Steam.</value>
</data>
<data name="BotStatusNotRunning" xml:space="preserve">
<value>Le bot nest pas en cours dexécution.</value>
@@ -714,4 +711,5 @@ StackTrace :
<value>Possède déjà : {0}</value>
<comment>{0} will be replaced by game's ID (number), {1} will be replaced by game's name</comment>
</data>
</root>

View File

@@ -550,4 +550,5 @@ StackTrace:
</root>

View File

@@ -325,6 +325,7 @@
</root>

View File

@@ -546,10 +546,7 @@ StackTrace: {2}</value>
<data name="BotLootingFailed" xml:space="preserve">
<value>Csereajánlat nem sikerült!</value>
</data>
<data name="BotLootingMasterNotDefined" xml:space="preserve">
<value>A csereajánlatot nem lehet elküldeni, mert a SteamMasterID nincs beállítva!</value>
<comment>SteamMasterID is name of bot config property, it should not be translated</comment>
</data>
<data name="BotLootingNoLootableTypes" xml:space="preserve">
<value>Nincsenek meghatározott begyűjtési típusaid!</value>
</data>
@@ -606,9 +603,7 @@ StackTrace: {2}</value>
<data name="BotStatusLimited" xml:space="preserve">
<value>A bot korlátolt, ezért nem tud farmolással kártyát kiszedni.</value>
</data>
<data name="BotStatusNotConnected" xml:space="preserve">
<value>A bot nem kapcsolódik.</value>
</data>
<data name="BotStatusNotRunning" xml:space="preserve">
<value>A bot nem fut.</value>
</data>
@@ -712,4 +707,5 @@ StackTrace: {2}</value>
<value>Már birtokolt: {0}</value>
<comment>{0} will be replaced by game's ID (number), {1} will be replaced by game's name</comment>
</data>
</root>

View File

@@ -142,12 +142,17 @@
<value>Pengecualian: {0}() {1} StackTrace:{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>Keluar dengan kode kesalahan bukan nol!</value>
</data>
<data name="ErrorFailingRequest" xml:space="preserve">
<value>Permintaan gagal: {0}</value>
<comment>{0} will be replaced by URL of the request</comment>
</data>
<data name="ErrorGlobalConfigNotLoaded" xml:space="preserve">
<value>Global config tidak dapat dimuat, pastikan bahwa {0} ada dan berlaku! Ikuti Panduan penyetelan pada wiki jika Anda bingung.</value>
<comment>{0} will be replaced by file's path</comment>
</data>
<data name="ErrorIsInvalid" xml:space="preserve">
<value>{0} tidak valid!</value>
<comment>{0} will be replaced by object's name</comment>
@@ -155,7 +160,9 @@
<data name="ErrorMobileAuthenticatorInvalidDeviceID" xml:space="preserve">
<value>Menolak untuk melaksanakan fungsi ini karena DeviceID di ASF 2FA tidak valid!</value>
</data>
<data name="ErrorNoBotsDefined" xml:space="preserve">
<value>Bot tidak didefinisikan, Apakah Anda lupa untuk mengkonfigurasi ASF Anda?</value>
</data>
<data name="ErrorObjectIsNull" xml:space="preserve">
<value>{0} masih kosong!</value>
<comment>{0} will be replaced by object's name</comment>
@@ -164,8 +171,14 @@
<value>Parsing {0} gagal!</value>
<comment>{0} will be replaced by object's name</comment>
</data>
<data name="ErrorRemovingOldBinary" xml:space="preserve">
<value>Tidak dapat menghapus file biner ASF lama, silakan hapus {0} secara manual agar fungsi update bekerja!</value>
<comment>{0} will be replaced by file's path</comment>
</data>
<data name="ErrorRequestFailedTooManyTimes" xml:space="preserve">
<value>Permintaan gagal setelah {0} kali upaya!</value>
<comment>{0} will be replaced by maximum number of tries</comment>
</data>
<data name="ErrorUpdateCheckFailed" xml:space="preserve">
<value>Tidak dapat memeriksa versi terbaru!</value>
</data>
@@ -287,14 +300,38 @@
<value>Versi lokal: {0} | Versi remote: {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>Masukkan nomor perangkat mobile authenticator (termasuk "android:"): </value>
<comment>Please note that this translation should end with space</comment>
</data>
<data name="UserInputSteam2FA" xml:space="preserve">
<value>Silakan masukkan kode 2FA dari aplikasi authenticator Steam Anda: </value>
<comment>Please note that this translation should end with space</comment>
</data>
<data name="UserInputSteamGuard" xml:space="preserve">
<value>Silakan masukkan kode otentikasi SteamGuard yang dikirim ke e-mail Anda: </value>
<comment>Please note that this translation should end with space</comment>
</data>
<data name="UserInputSteamLogin" xml:space="preserve">
<value>Masukkan login Steam Anda: </value>
<comment>Please note that this translation should end with space</comment>
</data>
<data name="UserInputSteamParentalPIN" xml:space="preserve">
<value>Masukkan PIN Parental Steam: </value>
<comment>Please note that this translation should end with space</comment>
</data>
<data name="UserInputSteamPassword" xml:space="preserve">
<value>Silakan masukkan sandi Steam anda: </value>
<comment>Please note that this translation should end with space</comment>
</data>
<data name="UserInputUnknown" xml:space="preserve">
<value>Masukkan suatu nilai yang tidak terdokumentasi {0}: </value>
<comment>{0} will be replaced by property name. Please note that this translation should end with space</comment>
</data>
<data name="UserInputWCFHost" xml:space="preserve">
<value>Masukkan host WCF Anda: </value>
<comment>Please note that this translation should end with space</comment>
</data>
<data name="WarningUnknownValuePleaseReport" xml:space="preserve">
<value>Menerima nilai yang tidak diketahui untuk {0}, laporkan hal ini: {1}</value>
<comment>{0} will be replaced by object's name, {1} will be replaced by value for that object</comment>
@@ -329,14 +366,25 @@
<value>Memulai server WCF di {0}...</value>
<comment>{0} will be replaced by WCF hostname</comment>
</data>
<data name="BotAlreadyStopped" xml:space="preserve">
<value>Bot ini sudah berhenti!</value>
</data>
<data name="BotNotFound" xml:space="preserve">
<value>Tidak dapat menemukan bot apapun yang bernama {0}!</value>
<comment>{0} will be replaced by bot's name query (string)</comment>
</data>
<data name="BotStatusOverview" xml:space="preserve">
<value>Ada {0}/{1} bot berjalan, dengan total {2} game ({3} kartu) untuk di-idle.</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">
<value>Bot sedang menganggurkan permainan: {0} {1} ({2} kartu tersisa) dari total {3} permainan ({4} kartu) tersisa untuk di-idle (~{5} yang tersisa).</value>
<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 built from TimeSpan* translation parts</comment>
</data>
<data name="BotStatusIdlingList" xml:space="preserve">
<value>Bot adalah menjalankan permainan: {0} dari total {1} permainan ({2} kartu) yang tersisa (~{3} yang tersisa).</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 built from TimeSpan* translation parts</comment>
</data>
<data name="CheckingFirstBadgePage" xml:space="preserve">
<value>Mengecek halaman badge pertama...</value>
</data>
@@ -408,7 +456,9 @@
<data name="UnknownCommand" xml:space="preserve">
<value>Perintah tidak dikenal!</value>
</data>
<data name="WarningCouldNotCheckBadges" xml:space="preserve">
<value>Tidak bisa mendapatkan informasi badge, kami akan mencoba lagi nanti!</value>
</data>
<data name="WarningCouldNotCheckCardsStatus" xml:space="preserve">
<value>Tidak dapat memeriksa status kartu untuk: {0} ({1}), kami akan mencoba lagi nanti!</value>
<comment>{0} will be replaced by game's ID (number), {1} will be replaced by game's name</comment>
@@ -417,10 +467,20 @@
<value>Menerima hadiah: {0}...</value>
<comment>{0} will be replaced by giftID (number)</comment>
</data>
<data name="BotAccountLimited" xml:space="preserve">
<value>Account ini terbatas, proses Idle tidak tersedia sampai pembatasan hilang!</value>
</data>
<data name="BotAddLicense" xml:space="preserve">
<value>ID: {0} | Status: {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} | Status: {1} | Item: {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 sudah berjalan!</value>
</data>
<data name="BotAuthenticatorConverting" xml:space="preserve">
<value>Mengkonfirmasi .maFile ke format ASF...</value>
</data>
@@ -434,8 +494,12 @@
<value>Token 2FA: {0}</value>
<comment>{0} will be replaced by generated 2FA token (string)</comment>
</data>
<data name="BotAutomaticIdlingNowPaused" xml:space="preserve">
<value>Idle otomatis telah berhenti!</value>
</data>
<data name="BotAutomaticIdlingNowResumed" xml:space="preserve">
<value>Idle otomatis telah dimulai kembali!</value>
</data>
<data name="BotAutomaticIdlingPausedAlready" xml:space="preserve">
<value>Idling otomatis sudah ditunda sebelumnya!</value>
</data>
@@ -483,8 +547,7 @@
<value>Penawaran trade gagal!</value>
</data>
<data name="BotLootingMasterNotDefined" xml:space="preserve">
<value>Trade tidak bisa dikirim karena SteamMasterID tidak didefinisikan!</value>
<comment>SteamMasterID is name of bot config property, it should not be translated</comment>
<value>Perdagangan tidak dapat dikirim karena ada tidak ada pengguna dengan izin master yang didefinisikan!</value>
</data>
<data name="BotLootingNoLootableTypes" xml:space="preserve">
<value>Anda belum mengatur jenis lootable!</value>
@@ -504,27 +567,56 @@
<data name="BotLootingYourself" xml:space="preserve">
<value>Anda tidak dapat me-loot diri sendiri!</value>
</data>
<data name="BotNoASFAuthenticator" xml:space="preserve">
<value>Bot tidak memiliki ASF 2FA yang diperbolehkan! Apakah kamu lupa untuk mengimpor authenticator kamu sebagai ASF 2FA?</value>
</data>
<data name="BotNotConnected" xml:space="preserve">
<value>Instansi bot ini tidak terhubung!</value>
</data>
<data name="BotNotOwnedYet" xml:space="preserve">
<value>Belum dimiliki: {0}</value>
<comment>{0} will be replaced by query (string)</comment>
</data>
<data name="BotOwnedAlreadyWithName" xml:space="preserve">
<value>Yang sudah dimiliki: {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="BotRateLimitExceeded" xml:space="preserve">
<value>Melebihi batas, kita akan coba lagi setelah {0} menit cooldown...</value>
<comment>{0} will be replaced by number of minutes</comment>
</data>
<data name="BotReconnecting" xml:space="preserve">
<value>Menyambungkan kembali...</value>
</data>
<data name="BotRedeem" xml:space="preserve">
<value>Kunci: {0} | Status: {1}</value>
<comment>{0} will be replaced by cd-key (string), {1} will be replaced by status string</comment>
</data>
<data name="BotRedeemWithItems" xml:space="preserve">
<value>Kunci: {0} | Status: {1} | Item: {2}</value>
<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>Menghapus kunci login yang sudah kadaluarsa!</value>
</data>
<data name="BotStatusNotIdling" xml:space="preserve">
<value>Bot tidak idle apapun.</value>
</data>
<data name="BotStatusLimited" xml:space="preserve">
<value>Bot dalam kondisi terbatas dan tidak bisa mendapatkan kartu melalui idling.</value>
</data>
<data name="BotStatusConnecting" xml:space="preserve">
<value>Bot sedang menghubungkan ke jaringan Steam.</value>
</data>
<data name="BotStatusNotRunning" xml:space="preserve">
<value>Bot tidak berjalan.</value>
</data>
<data name="BotStatusPaused" xml:space="preserve">
<value>Bot {0} di-pause atau berjalan dalam mode manual.</value>
</data>
<data name="BotStatusPlayingNotAvailable" xml:space="preserve">
<value>Bot saat ini sedang digunakan.</value>
</data>
<data name="BotUnableToConnect" xml:space="preserve">
<value>Tidak dapat terhubung ke Steam: {0}</value>
<comment>{0} will be replaced by failure reason (string)</comment>
@@ -545,19 +637,34 @@
<value>Gagal karena error: {0}</value>
<comment>{0} will be replaced by failure reason (string)</comment>
</data>
<data name="BotConnectionLost" xml:space="preserve">
<value>Koneksi ke Steam terputus, menghubungkan kembali...</value>
</data>
<data name="BotAccountFree" xml:space="preserve">
<value>Akun tidak sedang dipakai, proses idling dilanjutkan!</value>
</data>
<data name="BotAccountOccupied" xml:space="preserve">
<value>Akun ini sedang digunakan, ASF akan melanjutkan idling jika akun tidak sedang digunakan...</value>
</data>
<data name="BotAutomaticIdlingPauseTimeout" xml:space="preserve">
<value>Shared library belum diluncurkan dalam periode waktu yang diberikan, proses idling dilanjutkan!</value>
</data>
<data name="BotConnecting" xml:space="preserve">
<value>Menghubungkan...</value>
</data>
<data name="BotHeartBeatFailed" xml:space="preserve">
<value>Gagal untuk memutuskan klien, meninggalkan instansi bot ini!</value>
</data>
<data name="BotSteamDirectoryInitializationFailed" xml:space="preserve">
<value>Tidak dapat menginisialisasi SteamDirectory, menyambung ke Steam Network mungkin memakan waktu lebih lama dari biasanya!</value>
</data>
<data name="BotStopping" xml:space="preserve">
<value>Menghentikan...</value>
</data>
<data name="ErrorBotConfigInvalid" xml:space="preserve">
<value>Konfigurasi bot tidak valid, silakan memverifikasi isi konfigurasi dari {0} dan coba lagi!</value>
<comment>{0} will be replaced by file's path</comment>
</data>
<data name="ErrorDatabaseInvalid" xml:space="preserve">
<value>Database utama tidak dapat dimuat, jika masalah tetap berlanjut, silakan hapus {0} untuk membuat ulang database!</value>
<comment>{0} will be replaced by file's path</comment>
@@ -572,16 +679,39 @@
<data name="Welcome" xml:space="preserve">
<value>Sepertinya ini pertama kali bagi anda untuk meluncurkan program ini, Selamat Datang!</value>
</data>
<data name="ErrorInvalidCurrentCulture" xml:space="preserve">
<value>CurrentCulture yang anda berikan tidak valid, ASF akan tetap berjalan dengan kondisi default!</value>
</data>
<data name="TranslationIncomplete" xml:space="preserve">
<value>ASF akan mencoba untuk menggunakan bahasa {0} pilihan Anda, tetapi terjemahan dalam bahasa tersebut baru {1}. Mungkin Anda bisa membantu ASF untuk melengkapi terjemahan ke dalam bahasa Anda?</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>Pengidle-an {0} ({1}) sementara dinonaktifkan, karena ASF tidak mampu memainkan permainan itu pada saat ini.</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 mendeetksi ketidakcocokan ID untuk {0} ({1}) dan akan menggunakan ID {2} sebagai gantinya.</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">
<value>{0} V{1}</value>
<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>Account ini terkunci, proses idle tidak tersedia permanen!</value>
</data>
<data name="BotStatusLocked" xml:space="preserve">
<value>Bot dalam kondisi terkunci dan tidak bisa mendapatkan kartu melalui idling.</value>
</data>
<data name="ErrorFunctionOnlyInHeadlessMode" xml:space="preserve">
<value>Fungsi ini tersedia hanya dalam mode headless!</value>
</data>
<data name="BotOwnedAlready" xml:space="preserve">
<value>Yang sudah dimiliki: {0}</value>
<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>Akses ditolak!</value>
</data>
</root>

View File

@@ -142,12 +142,17 @@
<value>Eccezione: {0}() {1} StackTrace:{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>Uscita con codice di errore diverso da zero!</value>
</data>
<data name="ErrorFailingRequest" xml:space="preserve">
<value>Richiesta fallita: {0}</value>
<comment>{0} will be replaced by URL of the request</comment>
</data>
<data name="ErrorGlobalConfigNotLoaded" xml:space="preserve">
<value>La configurazione globale non può essere caricata. Assicurati che {0} esista e sia valido! Se sei confuso, segui la guida alla configurazione sul wiki.</value>
<comment>{0} will be replaced by file's path</comment>
</data>
<data name="ErrorIsInvalid" xml:space="preserve">
<value>{0} non è valido!</value>
<comment>{0} will be replaced by object's name</comment>
@@ -155,7 +160,9 @@
<data name="ErrorMobileAuthenticatorInvalidDeviceID" xml:space="preserve">
<value>Rifiutando di eseguire questa funzione a causa di un DeviceID invalido in ASF 2FA!</value>
</data>
<data name="ErrorNoBotsDefined" xml:space="preserve">
<value>Nessun bot è definito. Hai dimenticato di configurare il tuo ASF?</value>
</data>
<data name="ErrorObjectIsNull" xml:space="preserve">
<value>{0} è nullo!</value>
<comment>{0} will be replaced by object's name</comment>
@@ -164,8 +171,14 @@
<value>Analisi di {0} non riuscita!</value>
<comment>{0} will be replaced by object's name</comment>
</data>
<data name="ErrorRemovingOldBinary" xml:space="preserve">
<value>Impossibile rimuovere i vecchi file binari di ASF. Si prega di rimuovere {0} manualmente affinché l'aggiornamento funzioni correttamente!</value>
<comment>{0} will be replaced by file's path</comment>
</data>
<data name="ErrorRequestFailedTooManyTimes" xml:space="preserve">
<value>Richiesta non riuscita dopo {0} tentativi!</value>
<comment>{0} will be replaced by maximum number of tries</comment>
</data>
<data name="ErrorUpdateCheckFailed" xml:space="preserve">
<value>Non è stato possibile controllare la versione più recente!</value>
</data>
@@ -299,8 +312,14 @@
<value>Inserisci il codice di autenticazione di SteamGuard che è stato inviato al tuo indirizzo e-mail: </value>
<comment>Please note that this translation should end with space</comment>
</data>
<data name="UserInputSteamLogin" xml:space="preserve">
<value>Per favore inserisci il tuo login di Steam: </value>
<comment>Please note that this translation should end with space</comment>
</data>
<data name="UserInputSteamParentalPIN" xml:space="preserve">
<value>Si prega di inserire il PIN famigliare Steam: </value>
<comment>Please note that this translation should end with space</comment>
</data>
<data name="UserInputSteamPassword" xml:space="preserve">
<value>Inserisci la tua password di Steam: </value>
<comment>Please note that this translation should end with space</comment>
@@ -347,12 +366,17 @@
<value>Avvio del server WCF in {0}...</value>
<comment>{0} will be replaced by WCF hostname</comment>
</data>
<data name="BotAlreadyStopped" xml:space="preserve">
<value>Questo bot è già stato arrestato!</value>
</data>
<data name="BotNotFound" xml:space="preserve">
<value>Impossibile trovare un bot denominato {0}!</value>
<comment>{0} will be replaced by bot's name query (string)</comment>
</data>
<data name="BotStatusOverview" xml:space="preserve">
<value>Ci sono {0}/{1} bot in esecuzione, per un totale di {2} giochi ({3} carte) ancora da trovare.</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">
<value>Il bot sta farmando il gioco: {0} ({1}, {2} carte rimanenti) su un totale di {3} giochi ({4} carte) ancora da farmare (~{5} rimanenti).</value>
<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 built from TimeSpan* translation parts</comment>
@@ -432,7 +456,9 @@
<data name="UnknownCommand" xml:space="preserve">
<value>Comando sconosciuto!</value>
</data>
<data name="WarningCouldNotCheckBadges" xml:space="preserve">
<value>Impossibile ottenere informazioni sulle medaglie, riproveremo più tardi!</value>
</data>
<data name="WarningCouldNotCheckCardsStatus" xml:space="preserve">
<value>Impossibile controllare lo stato delle carte per:{0} ({1}), riproveremo più tardi!</value>
<comment>{0} will be replaced by game's ID (number), {1} will be replaced by game's name</comment>
@@ -441,9 +467,17 @@
<value>Accettando il regalo: {0}...</value>
<comment>{0} will be replaced by giftID (number)</comment>
</data>
<data name="BotAccountLimited" xml:space="preserve">
<value>Questo account è limitato, il processo di idling non sarà disponibile finché non verrà rimossa la restrizione!</value>
</data>
<data name="BotAddLicense" xml:space="preserve">
<value>ID: {0} | Stato: {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} | Stato: {1} | Elementi: {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>Questo bot è già in esecuzione!</value>
</data>
@@ -460,8 +494,12 @@
<value>Token 2FA: {0}</value>
<comment>{0} will be replaced by generated 2FA token (string)</comment>
</data>
<data name="BotAutomaticIdlingNowPaused" xml:space="preserve">
<value>L'idling automatico è stato sospeso!</value>
</data>
<data name="BotAutomaticIdlingNowResumed" xml:space="preserve">
<value>L'idling automatico è stato ripreso!</value>
</data>
<data name="BotAutomaticIdlingPausedAlready" xml:space="preserve">
<value>L'idling automatico è già in pausa!</value>
</data>
@@ -508,10 +546,7 @@
<data name="BotLootingFailed" xml:space="preserve">
<value>Offerta di scambio fallita!</value>
</data>
<data name="BotLootingMasterNotDefined" xml:space="preserve">
<value>Impossibile inviare l'offerta di scambio perché SteamMasterID non è definito!</value>
<comment>SteamMasterID is name of bot config property, it should not be translated</comment>
</data>
<data name="BotLootingNoLootableTypes" xml:space="preserve">
<value>Non hai configurato il tipo di oggetti per il loot!</value>
</data>
@@ -540,8 +575,14 @@
<value>Non ancora posseduto: {0}</value>
<comment>{0} will be replaced by query (string)</comment>
</data>
<data name="BotOwnedAlreadyWithName" xml:space="preserve">
<value>Già posseduto: {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="BotRateLimitExceeded" xml:space="preserve">
<value>Superato il numero di tentativi; ritenteremo tra {0} minuti di attesa...</value>
<comment>{0} will be replaced by number of minutes</comment>
</data>
<data name="BotReconnecting" xml:space="preserve">
<value>Riconnessione...</value>
</data>
@@ -556,11 +597,13 @@
<data name="BotRemovedExpiredLoginKey" xml:space="preserve">
<value>Rimossa la chiave di accesso scaduta!</value>
</data>
<data name="BotStatusNotConnected" xml:space="preserve">
<value>Bot non è connesso.</value>
<data name="BotStatusNotIdling" xml:space="preserve">
<value>Il Bot non sta trovando niente.</value>
</data>
<data name="BotStatusLimited" xml:space="preserve">
<value>Il Bot è un account limitato e non può ottenere carte tramite idling.</value>
</data>
<data name="BotStatusNotRunning" xml:space="preserve">
<value>Bot non è in esecuzione.</value>
</data>
@@ -590,19 +633,34 @@
<value>Fallito a causa di un errore: {0}</value>
<comment>{0} will be replaced by failure reason (string)</comment>
</data>
<data name="BotConnectionLost" xml:space="preserve">
<value>Connessione alla rete di Steam persa. Riconnessione in corso...</value>
</data>
<data name="BotAccountFree" xml:space="preserve">
<value>L'account non è più occupato: il processo di idling è stato ripreso!</value>
</data>
<data name="BotAccountOccupied" xml:space="preserve">
<value>L'account è attualmente in uso: ASF riprenderà l'idling quando sarà nuovamente libero...</value>
</data>
<data name="BotAutomaticIdlingPauseTimeout" xml:space="preserve">
<value>La libreria condivisa non è stata avviata nel limite di tempo predeterminato. Il processo di idling è ripreso!</value>
</data>
<data name="BotConnecting" xml:space="preserve">
<value>Connessione in corso...</value>
</data>
<data name="BotHeartBeatFailed" xml:space="preserve">
<value>Disconnessione del client non riuscita. Abbandonando questa istanza di bot!</value>
</data>
<data name="BotSteamDirectoryInitializationFailed" xml:space="preserve">
<value>Impossibile inizializzare SteamDirectory: il collegamento con la rete di Steam potrebbe richiedere più tempo del solito!</value>
</data>
<data name="BotStopping" xml:space="preserve">
<value>Interruzione in corso...</value>
</data>
<data name="ErrorBotConfigInvalid" xml:space="preserve">
<value>La configurazione del tuo bot non è valida. Verifica il contenuto di {0} e riprova!</value>
<comment>{0} will be replaced by file's path</comment>
</data>
<data name="ErrorDatabaseInvalid" xml:space="preserve">
<value>Impossibile caricare il database permanente, se il problema persiste, rimuovi {0} per ricreare il database!</value>
<comment>{0} will be replaced by file's path</comment>
@@ -617,19 +675,37 @@
<data name="Welcome" xml:space="preserve">
<value>Sembra che questa sia la prima volta che avvii il programma, benvenuto!</value>
</data>
<data name="ErrorInvalidCurrentCulture" xml:space="preserve">
<value>Il valore CurrentCulture che hai fornito non è valido, ASF continuerà ad utilizzare quello di default!</value>
</data>
<data name="TranslationIncomplete" xml:space="preserve">
<value>ASF proverà ad utilizzare la tua lingua preferita {0}, ma la traduzione è completa solo al {1}. Forse potresti aiutarci a migliorare la traduzione di ASF nella tua lingua?</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>L'idling di {0} ({1}) è temporaneamente disabilitato, poiché ASF non è in grado di riprodurre questo gioco al momento.</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 ha rilevato una mancata corrispondenza per l'ID {0} ({1}), quindi utilizzerà {2} al suo posto.</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">
<value>{0} V{1}</value>
<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>Questo account è bloccato, il processo di idling è permanentemente non disponibile!</value>
</data>
<data name="BotStatusLocked" xml:space="preserve">
<value>Il Bot è un account bloccato e non può ottenere carte tramite idling.</value>
</data>
<data name="ErrorFunctionOnlyInHeadlessMode" xml:space="preserve">
<value>Questa funzione è disponibile solo in modalità non-interattiva!</value>
</data>
<data name="BotOwnedAlready" xml:space="preserve">
<value>Già posseduto: {0}</value>
<comment>{0} will be replaced by game's ID (number), {1} will be replaced by game's name</comment>
</data>
</root>

View File

@@ -545,10 +545,7 @@
<data name="BotLootingFailed" xml:space="preserve">
<value>トレードのオファーに失敗しました!</value>
</data>
<data name="BotLootingMasterNotDefined" xml:space="preserve">
<value>SteamMasterIDが定義されていないため、トレードを送ることができませんでした</value>
<comment>SteamMasterID is name of bot config property, it should not be translated</comment>
</data>
<data name="BotLootingNoLootableTypes" xml:space="preserve">
<value>Lootable typesが設定されていません</value>
</data>
@@ -605,9 +602,7 @@
<data name="BotStatusLimited" xml:space="preserve">
<value>Botは制限中のため、アイドリングでカードをドロップできません。</value>
</data>
<data name="BotStatusNotConnected" xml:space="preserve">
<value>Botは接続されていません。</value>
</data>
<data name="BotStatusNotRunning" xml:space="preserve">
<value>Botは実行されていません。</value>
</data>
@@ -711,4 +706,5 @@
<value>所有している: {0}</value>
<comment>{0} will be replaced by game's ID (number), {1} will be replaced by game's name</comment>
</data>
</root>

View File

@@ -551,8 +551,7 @@ ASF 실행 파일의 이름이 적절한지 확인하시기 바랍니다!</value
<value>거래 제안 실패!</value>
</data>
<data name="BotLootingMasterNotDefined" xml:space="preserve">
<value>SteamMasterID가 정의되지 않아 거래 요청을 보낼 수 없습니다!</value>
<comment>SteamMasterID is name of bot config property, it should not be translated</comment>
<value>Master 권한이 설정된 유저가 없어, 거래를 전송할 수 없습니다.</value>
</data>
<data name="BotLootingNoLootableTypes" xml:space="preserve">
<value>루팅 타입 설정이 없습니다!</value>
@@ -610,8 +609,8 @@ ASF 실행 파일의 이름이 적절한지 확인하시기 바랍니다!</value
<data name="BotStatusLimited" xml:space="preserve">
<value>봇이 제한된 계정입니다. 농사로 카드를 얻을 수 없습니다.</value>
</data>
<data name="BotStatusNotConnected" xml:space="preserve">
<value>봇이 연결되지 않았습니다.</value>
<data name="BotStatusConnecting" xml:space="preserve">
<value>봇이 Steam 네트워크에 연결 중입니다.</value>
</data>
<data name="BotStatusNotRunning" xml:space="preserve">
<value>봇이 실행 중이 아닙니다.</value>
@@ -716,4 +715,7 @@ ASF 실행 파일의 이름이 적절한지 확인하시기 바랍니다!</value
<value>이미 보유: {0}</value>
<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>
</data>
</root>

View File

@@ -546,8 +546,7 @@
<value>Mainai nepavyko!</value>
</data>
<data name="BotLootingMasterNotDefined" xml:space="preserve">
<value>Užklausa mainytis negalėjo būti išsiųsta, nes SteamMasterID nėra apibrėžtas!</value>
<comment>SteamMasterID is name of bot config property, it should not be translated</comment>
<value>Mainai nebuvo išsiųsti, nes nėra apibrėžto jokio vartotojo su pagrindinėmis prieigomis!</value>
</data>
<data name="BotLootingNoLootableTypes" xml:space="preserve">
<value>Jūs neturite jokių kortelių grobio tipų nustatytų!</value>
@@ -605,8 +604,8 @@
<data name="BotStatusLimited" xml:space="preserve">
<value>Botas yra ribotas ir negali gauti jokių kortelių iš rinkimo.</value>
</data>
<data name="BotStatusNotConnected" xml:space="preserve">
<value>Botas nėra prijungtas.</value>
<data name="BotStatusConnecting" xml:space="preserve">
<value>Botas jungiasi prie Steam tinklo.</value>
</data>
<data name="BotStatusNotRunning" xml:space="preserve">
<value>Botas nėra įjungtas.</value>
@@ -711,4 +710,7 @@
<value>Jau turima: {0}</value>
<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>Prieiga negalima!</value>
</data>
</root>

View File

@@ -285,6 +285,7 @@
</root>

View File

@@ -118,7 +118,7 @@
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="AcceptingTrade" xml:space="preserve">
<value>Ruilaanbieding {0} wordt geaccepteerd</value>
<value>Ruilaanbod wordt geaccepteerd: {0}</value>
<comment>{0} will be replaced by trade number</comment>
</data>
<data name="AutoUpdateCheckInfo" xml:space="preserve">
@@ -134,7 +134,7 @@
<comment>{0} will be replaced by name of the configuration property, {1} will be replaced by invalid value</comment>
</data>
<data name="ErrorEarlyFatalExceptionInfo" xml:space="preserve">
<value>ASF V{0} heeft een fatale uitzondering tegengekomen voordat het kern logboek module in staat was om te initialiseren!</value>
<value>ASF V{0} heeft een fatale uitzonderingsfout veroorzaakt voordat het hoofd logboekmodule in staat was om te initialiseren!</value>
<comment>{0} will be replaced by version number</comment>
</data>
<data name="ErrorEarlyFatalExceptionPrint" xml:space="preserve">
@@ -143,12 +143,17 @@ StackTrace:
{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>Afsluiten met een nonzero foutcode!</value>
</data>
<data name="ErrorFailingRequest" xml:space="preserve">
<value>Vezoek mislukt: {0}</value>
<comment>{0} will be replaced by URL of the request</comment>
</data>
<data name="ErrorGlobalConfigNotLoaded" xml:space="preserve">
<value>Globale configuratie kon niet worden geladen. Controleer of {0} bestaat en geldig is! Raadpleeg de 'setting up' sectie van de wiki als je niet weet je wat je moet doen.</value>
<comment>{0} will be replaced by file's path</comment>
</data>
<data name="ErrorIsInvalid" xml:space="preserve">
<value>{0} is ongeldig!</value>
<comment>{0} will be replaced by object's name</comment>
@@ -156,7 +161,9 @@ StackTrace:
<data name="ErrorMobileAuthenticatorInvalidDeviceID" xml:space="preserve">
<value>Deze functie wordt niet uitgevoerd als gevolg van de ongeldige DeviceID in ASF 2FA!</value>
</data>
<data name="ErrorNoBotsDefined" xml:space="preserve">
<value>Er zijn geen bots gedefinieerd. Ben je vergeten om ASF te configureren?</value>
</data>
<data name="ErrorObjectIsNull" xml:space="preserve">
<value>{0} is null!</value>
<comment>{0} will be replaced by object's name</comment>
@@ -165,22 +172,28 @@ StackTrace:
<value>Verwerking van {0} mislukt!</value>
<comment>{0} will be replaced by object's name</comment>
</data>
<data name="ErrorRemovingOldBinary" xml:space="preserve">
<value>Het oude ASF-bestand kon niet worden verwijderd. Verwijder {0} handmatig, zodat de update uitgevoerd kan worden!</value>
<comment>{0} will be replaced by file's path</comment>
</data>
<data name="ErrorRequestFailedTooManyTimes" xml:space="preserve">
<value>Verzoek is mislukt na {0} pogingen!</value>
<comment>{0} will be replaced by maximum number of tries</comment>
</data>
<data name="ErrorUpdateCheckFailed" xml:space="preserve">
<value>Controle voor de laatste versie is mislukt!</value>
</data>
<data name="ErrorUpdateNoAssetForThisBinary" xml:space="preserve">
<value>Kon niet verdergaan met updaten omdat er geen bestand bestaat dat gerelateerd is aan de momenteel actieve binary! Controleer of de ASF binary de juiste naam heeft!</value>
<value>Kon niet verdergaan met updaten, omdat er geen bestand verwijst naar de momenteel draaiende versie! Zorg ervoor dat je ASF bestand de correcte naam heeft!</value>
</data>
<data name="ErrorUpdateNoAssets" xml:space="preserve">
<value>Kon niet verdergaan met de update omdat deze versie niet alle bestanden omvat!</value>
</data>
<data name="ErrorUserInputRunningInHeadlessMode" xml:space="preserve">
<value>Aanvraag voor gebruikersinvoer ontvangen, maar het proces draait in headless mode!</value>
<value>Aanvraag voor gebruikersinvoer ontvangen, maar het proces draait in de headless mode!</value>
</data>
<data name="ErrorWCFAccessDenied" xml:space="preserve">
<value>Het verzoek wordt niet in behandeling genomen omdat SteamOwnerID niet is ingesteld!</value>
<value>Het verzoek wordt niet in behandeling genomen omdat het SteamOwnerID niet is ingesteld!</value>
<comment>SteamOwnerID is name of bot config property, it should not be translated</comment>
</data>
<data name="Exiting" xml:space="preserve">
@@ -196,7 +209,7 @@ StackTrace:
<value>Globaal configuratiebestand is verwijderd!</value>
</data>
<data name="IgnoringTrade" xml:space="preserve">
<value>Ruilaanbieding {0} wordt genegeerd</value>
<value>Ruilaanbod wordt genegeerd: {0}</value>
<comment>{0} will be replaced by trade number</comment>
</data>
<data name="LoggingIn" xml:space="preserve">
@@ -210,7 +223,7 @@ StackTrace:
<value>Sessie wordt ververst!</value>
</data>
<data name="RejectingTrade" xml:space="preserve">
<value>Ruilaanbieding {0} wordt afgekeurd</value>
<value>Ruilaanbod wordt afgewezen: {0}</value>
<comment>{0} will be replaced by trade number</comment>
</data>
<data name="Restarting" xml:space="preserve">
@@ -239,7 +252,7 @@ StackTrace:
<comment>{0} will be replaced by status code number/name</comment>
</data>
<data name="Success" xml:space="preserve">
<value>Succes!</value>
<value>Succesvol!</value>
</data>
<data name="TimeSpanDay" xml:space="preserve">
<value>1 dag</value>
@@ -252,7 +265,7 @@ StackTrace:
<value>1 uur</value>
</data>
<data name="TimeSpanHours" xml:space="preserve">
<value>{0} uren</value>
<value>{0} uur</value>
<comment>{0} will be replaced by number of hours</comment>
</data>
<data name="TimeSpanMinute" xml:space="preserve">
@@ -270,13 +283,13 @@ StackTrace:
<comment>{0} will be replaced by number of seconds</comment>
</data>
<data name="UnlockingParentalAccount" xml:space="preserve">
<value>Ouderaccount wordt ontgrendeld...</value>
<value>Ouderlijk toezicht wordt ontgrendeld...</value>
</data>
<data name="UpdateCheckingNewVersion" xml:space="preserve">
<value>Controleren op nieuwe versie...</value>
</data>
<data name="UpdateDownloadingNewVersion" xml:space="preserve">
<value>Nieuwe versie wordt gedownloadt... Onder het wachten, overweeg te doneren als je het gedane werk waardeert! :)</value>
<value>Nieuwe versie wordt gedownload... Als je het gedane werk waardeert, overweeg dan tijdens het wachten om te doneren! :)</value>
</data>
<data name="UpdateFinished" xml:space="preserve">
<value>Bijwerken afgerond!</value>
@@ -288,19 +301,29 @@ StackTrace:
<value>Lokale versie: {0} | Externe versie: {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>Voer je mobiele authenticator device ID in (inclusief "android:"):
</value>
<comment>Please note that this translation should end with space</comment>
</data>
<data name="UserInputSteam2FA" xml:space="preserve">
<value>Voer uw 2FA code van uw Steam authenticator app in: </value>
<value>Voer de 2FA code in van je Steam authenticator app: </value>
<comment>Please note that this translation should end with space</comment>
</data>
<data name="UserInputSteamGuard" xml:space="preserve">
<value>Voer de SteamGuard auth code in die naar uw e-mail is gestuurd: </value>
<value>Voer de SteamGuard authenticator-code in die naar je e-mail is verzonden: </value>
<comment>Please note that this translation should end with space</comment>
</data>
<data name="UserInputSteamLogin" xml:space="preserve">
<value>Voer je Steam gebruikersnaam in: </value>
<comment>Please note that this translation should end with space</comment>
</data>
<data name="UserInputSteamParentalPIN" xml:space="preserve">
<value>Voer je Steam ouderlijk toezicht pincode in: </value>
<comment>Please note that this translation should end with space</comment>
</data>
<data name="UserInputSteamPassword" xml:space="preserve">
<value>Voer uw Steam wachtwoord in: </value>
<value>Voer je Steam wachtwoord in: </value>
<comment>Please note that this translation should end with space</comment>
</data>
<data name="UserInputUnknown" xml:space="preserve">
@@ -308,7 +331,7 @@ StackTrace:
<comment>{0} will be replaced by property name. Please note that this translation should end with space</comment>
</data>
<data name="UserInputWCFHost" xml:space="preserve">
<value>Voer uw WCF host in: </value>
<value>Voer je WCF host in: </value>
<comment>Please note that this translation should end with space</comment>
</data>
<data name="WarningUnknownValuePleaseReport" xml:space="preserve">
@@ -316,7 +339,7 @@ StackTrace:
<comment>{0} will be replaced by object's name, {1} will be replaced by value for that object</comment>
</data>
<data name="WarningTooManyGamesToPlay" xml:space="preserve">
<value>Het spelen van meer dan {0} games gelijktijdig is niet mogelijk, alleen de eerste {0} games van {1} worden gebruikt!</value>
<value>Het gelijktijdig spelen van meer dan {0} spellen is niet mogelijk, alleen de eerste {0} spellen van {1} worden gebruikt!</value>
<comment>{0} will be replaced by max number of games, {1} will be replaced by name of the configuration property</comment>
</data>
<data name="WarningWCFIgnoringCommand" xml:space="preserve">
@@ -324,7 +347,7 @@ StackTrace:
<comment>{0} will be replaced by WCF command</comment>
</data>
<data name="ErrorWCFAddressAccessDeniedException" xml:space="preserve">
<value>WCF service kan niet worden gestart vanwege de AddressAccessDeniedException! Als je zelf gebruik wilt maken van de WCF service van ASF, overweeg om ASF te starten als administrator of geef de juiste machtigingen!</value>
<value>WCF service kan niet worden gestart vanwege de AddressAccessDeniedException! Als je gebruik wilt maken van de WCF service van ASF, start ASF als administrator of geef de juiste machtigingen!</value>
</data>
<data name="WCFAnswered" xml:space="preserve">
<value>Beantwoordt aan WCF opdracht: {0} met: {1}</value>
@@ -349,19 +372,19 @@ StackTrace:
<value>Deze bot is al gestopt!</value>
</data>
<data name="BotNotFound" xml:space="preserve">
<value>Kan geen bot vinden genaamd {0}!</value>
<value>Kon geen bot vinden met de naam {0}!</value>
<comment>{0} will be replaced by bot's name query (string)</comment>
</data>
<data name="BotStatusOverview" xml:space="preserve">
<value>Er zijn {0}/{1} bots actief, met een totaal van {2} spellen ({3} kaarten) over om te idlen.</value>
<value>Er zijn {0}/{1} bots actief, met een totaal van {2} spel(len) te spelen en {3} kaart(en) resterend om te verzamelen.</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">
<value>Bot idled spel: {0} ({1}, {2} kaarten resterend) van een totaal van {3} spellen ({4} kaarten) over om te idlen (~{5} resterend).</value>
<value>Bot speelt: {0} ({1}, {2} kaart(en) resterend). Totaal nog {3} spel(len) te spelen en {4} kaart(en) resterend om te verzamelen (~{5} resterend).</value>
<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 built from TimeSpan* translation parts</comment>
</data>
<data name="BotStatusIdlingList" xml:space="preserve">
<value>Bot idled spellen: {0} van een totaal van {1} spellen ({2} kaarten) over om te idlen (~{3} resterend).</value>
<value>Bot speelt de spellen: {0}. Totaal nog {1} spel(len) te spelen en {2} kaart(en) resterend om te verzamelen (~{3} resterend).</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 built from TimeSpan* translation parts</comment>
</data>
<data name="CheckingFirstBadgePage" xml:space="preserve">
@@ -371,29 +394,29 @@ StackTrace:
<value>Andere badge pagina's controleren...</value>
</data>
<data name="ChosenFarmingAlgorithm" xml:space="preserve">
<value>Gekozen idling algoritme: {0}</value>
<value>Gekozen farming algoritme: {0}</value>
<comment>{0} will be replaced by the name of chosen idling algorithm</comment>
</data>
<data name="Done" xml:space="preserve">
<value>Klaar!</value>
<value>Gereed!</value>
</data>
<data name="GamesToIdle" xml:space="preserve">
<value>We hebben een totaal van {0} spellen ({1} kaarten) nog te idlen (~{2} resterende)...</value>
<value>We hebben een totaal van {0} spel(len) en nog {1} kaart(en) te verzamelen (~{2} resterend)...</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 built from TimeSpan* translation parts</comment>
</data>
<data name="IdlingFinished" xml:space="preserve">
<value>Idling klaar!</value>
<value>Farmen is gereed!</value>
</data>
<data name="IdlingFinishedForGame" xml:space="preserve">
<value>Klaar met idlen: {0} ({1}) na {2} speeltijd!</value>
<value>Farmen is gereed: {0} ({1}) na {2} speeltijd!</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 built from TimeSpan* translation parts</comment>
</data>
<data name="IdlingFinishedForGames" xml:space="preserve">
<value>Het idlen is klaar voor de games: {0}</value>
<value>Farmen is gereed voor de spellen: {0}</value>
<comment>{0} will be replaced by list of the games (IDs, numbers), separated by a comma</comment>
</data>
<data name="IdlingStatusForGame" xml:space="preserve">
<value>Idling status voor {0} {1}): {2} kaarten resterend</value>
<value>Farming status voor {0} ({1}): {2} kaart(en) resterend.</value>
<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</comment>
</data>
<data name="IdlingStopped" xml:space="preserve">
@@ -403,7 +426,7 @@ StackTrace:
<value>Dit verzoek wordt genegeerd. Permanente pauze staat aan!</value>
</data>
<data name="NothingToIdle" xml:space="preserve">
<value>We hebben niks om te idlen op dit account!</value>
<value>We hebben niets om te farmen op dit account!</value>
</data>
<data name="NowIdling" xml:space="preserve">
<value>Nu aan het idlen: {0} ({1})</value>
@@ -439,24 +462,32 @@ StackTrace:
<value>Kon badge informatie niet verkrijgen, we zullen het later opnieuw proberen!</value>
</data>
<data name="WarningCouldNotCheckCardsStatus" xml:space="preserve">
<value>Kaart status kan niet worden gecontroleerd voor {0} ({1}), wij zullen het later nogmaals proberen!</value>
<value>Kaart status kon niet worden gecontroleerd voor {0} ({1}), wij zullen het later nogmaals proberen!</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>Cadeau accepteren: {0}...</value>
<value>Gift accepteren: {0}...</value>
<comment>{0} will be replaced by giftID (number)</comment>
</data>
<data name="BotAccountLimited" xml:space="preserve">
<value>Dit account is gelimiteerd, idle proces is niet beschikbaar totdat de beperking is opgeheven!</value>
<value>Dit account is gelimiteerd, farming proces is niet beschikbaar totdat de beperking is opgeheven!</value>
</data>
<data name="BotAddLicense" xml:space="preserve">
<value>ID: {0} | Status: {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} | Status: {1} | Items: {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>Deze bot is al actief!</value>
</data>
<data name="BotAuthenticatorConverting" xml:space="preserve">
<value>.maFile omzetten naar ASF formaat...</value>
</data>
<data name="BotAuthenticatorImportFinished" xml:space="preserve">
<value>Met succes de mobiele authenticator geimporteerd!</value>
<value>Succesvol de mobiele authenticator geïmporteerd!</value>
</data>
<data name="BotAuthenticatorInvalidDeviceID" xml:space="preserve">
<value>Je DeviceID is incorrect of bestaat niet!</value>
@@ -466,20 +497,20 @@ StackTrace:
<comment>{0} will be replaced by generated 2FA token (string)</comment>
</data>
<data name="BotAutomaticIdlingNowPaused" xml:space="preserve">
<value>Automatisch idlen is gepauzeerd!</value>
<value>Automatisch farmen is gepauzeerd!</value>
</data>
<data name="BotAutomaticIdlingNowResumed" xml:space="preserve">
<value>Automatisch idlen is hervat!</value>
<value>Automatisch farmen is hervat!</value>
</data>
<data name="BotAutomaticIdlingPausedAlready" xml:space="preserve">
<value>Automatisch idling is al gepauzeerd!</value>
<value>Automatisch farmen is al gepauzeerd!</value>
</data>
<data name="BotAutomaticIdlingPausedWithCountdown" xml:space="preserve">
<value>Automatisch idling is nu gepauzeerd! Je hebt {0} minuten om een spel te starten.</value>
<value>Automatisch farmen is nu gepauzeerd! Je hebt {0} minuten om een spel te starten.</value>
<comment>{0} will be replaced by number of minutes</comment>
</data>
<data name="BotAutomaticIdlingResumedAlready" xml:space="preserve">
<value>Automatisch idling is al hervat!</value>
<value>Automatisch farmen is al hervat!</value>
</data>
<data name="BotConnected" xml:space="preserve">
<value>Verbonden met Steam!</value>
@@ -498,7 +529,7 @@ StackTrace:
<value>Deze bot wordt niet gestart omdat hij uitgeschakeld is in het configuratie bestand!</value>
</data>
<data name="BotInvalidAuthenticatorDuringLogin" xml:space="preserve">
<value>TwoFactorCodeMisMatch foutmelding {0} ontvangen, dit betekent bijna altijd de verkeerde ASF 2FA login informatie, afbreken!</value>
<value>TwoFactorCodeMisMatch foutmelding {0} keer ontvangen. Dit betekent meestal de verkeerde ASF 2FA login informatie, afbreken!</value>
<comment>{0} will be replaced by maximum allowed number of failed 2FA attempts</comment>
</data>
<data name="BotLoggedOff" xml:space="preserve">
@@ -512,14 +543,13 @@ StackTrace:
<value>Inloggen...</value>
</data>
<data name="BotLogonSessionReplaced" xml:space="preserve">
<value>Het lijkt erop dat dit account wordt gebruikt in een ander ASF instantie, met onbepaald gedrag, weigeren om het draaiende te houden!</value>
<value>Dit account wordt waarschijnlijk al gebruikt door een andere ASF instantie, wat wordt gezien als ongedefinieerd gedrag. Weigeren om het draaiende te houden!</value>
</data>
<data name="BotLootingFailed" xml:space="preserve">
<value>Handelsvoorstel mislukt!</value>
</data>
<data name="BotLootingMasterNotDefined" xml:space="preserve">
<value>Trade kon niet verzonden worden, omdat SteamMasterID niet is ingesteld!</value>
<comment>SteamMasterID is name of bot config property, it should not be translated</comment>
<value>Ruilaanbod kon niet verzonden worden omdat er geen gebruiker is toegewezen met master permissies!</value>
</data>
<data name="BotLootingNoLootableTypes" xml:space="preserve">
<value>Je hebt geen lootable types ingesteld!</value>
@@ -537,11 +567,13 @@ StackTrace:
<value>Looting is tijdelijk uitgeschakeld!</value>
</data>
<data name="BotLootingYourself" xml:space="preserve">
<value>Je kan je zelf niet looten!</value>
<value>Je kan jezelf niet looten!</value>
</data>
<data name="BotNoASFAuthenticator" xml:space="preserve">
<value>Deze bot heeft ASF 2FA nog niet ingeschakeld! Ben je vergeten om je authenticator te importeren als ASF 2FA?</value>
</data>
<data name="BotNotConnected" xml:space="preserve">
<value>Deze bot instatie is niet verbonden!</value>
<value>Deze bot is niet verbonden!</value>
</data>
<data name="BotNotOwnedYet" xml:space="preserve">
<value>Nog niet in bezit: {0}</value>
@@ -551,31 +583,48 @@ StackTrace:
<value>Al in bezit: {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="BotRateLimitExceeded" xml:space="preserve">
<value>Aanvraaglimiet overschreden, we zullen het over {0} minuten opnieuw proberen...</value>
<comment>{0} will be replaced by number of minutes</comment>
</data>
<data name="BotReconnecting" xml:space="preserve">
<value>Opnieuw verbinden...</value>
</data>
<data name="BotRedeem" xml:space="preserve">
<value>Code: {0} | Status: {1}</value>
<comment>{0} will be replaced by cd-key (string), {1} will be replaced by status string</comment>
</data>
<data name="BotRedeemWithItems" xml:space="preserve">
<value>Code: {0} | Status: {1} | Items: {2}</value>
<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>Verlopen login sleutel verwijderd!</value>
<value>Verlopen inlogcode verwijderd!</value>
</data>
<data name="BotStatusNotIdling" xml:space="preserve">
<value>Bot is niks aan het idlen.</value>
<value>Bot is niet aan het farmen.</value>
</data>
<data name="BotStatusNotConnected" xml:space="preserve">
<value>Bot is niet verbonden.</value>
<data name="BotStatusLimited" xml:space="preserve">
<value>Bot is gelimiteerd en kan geen kaarten verzamelen.</value>
</data>
<data name="BotStatusConnecting" xml:space="preserve">
<value>Bot is aan het verbinden met het Steam netwerk.</value>
</data>
<data name="BotStatusNotRunning" xml:space="preserve">
<value>Bot is niet actief.</value>
</data>
<data name="BotStatusPaused" xml:space="preserve">
<value>Bot is gepauzeerd of wordt uitgevoerd in de handmatige modus.</value>
</data>
<data name="BotStatusPlayingNotAvailable" xml:space="preserve">
<value>Bot is momenteel in gebruik.</value>
</data>
<data name="BotUnableToConnect" xml:space="preserve">
<value>Niet in staat om op Steam in te loggen: {0}</value>
<value>Kan geen verbinding maken met Steam: {0}</value>
<comment>{0} will be replaced by failure reason (string)</comment>
</data>
<data name="BotUnableToLogin" xml:space="preserve">
<value>Niet in staat om op Steam inteloggen: {0}/{1}</value>
<value>Kan niet inloggen op 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">
@@ -583,7 +632,7 @@ StackTrace:
<comment>{0} will be replaced by object's name</comment>
</data>
<data name="UnusedKeys" xml:space="preserve">
<value>Ongebruikte cd-keys: {0}</value>
<value>Ongebruikte codes: {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">
@@ -591,16 +640,16 @@ StackTrace:
<comment>{0} will be replaced by failure reason (string)</comment>
</data>
<data name="BotConnectionLost" xml:space="preserve">
<value>Verbinding met Steam netwerk onderbroken. Herverbinden...</value>
<value>Verbinding met Steam netwerk verbroken. Opnieuw verbinden...</value>
</data>
<data name="BotAccountFree" xml:space="preserve">
<value>Account is niet meer bezet: idling proces hervat!</value>
<value>Account is niet meer bezet: farming proces hervat!</value>
</data>
<data name="BotAccountOccupied" xml:space="preserve">
<value>Account is momenteel in gebruik: ASF zal het idlen hervatten wanneer het vrijkomt...</value>
<value>Account is momenteel in gebruik: ASF zal het farmen hervatten wanneer het account weer beschikbaar is...</value>
</data>
<data name="BotAutomaticIdlingPauseTimeout" xml:space="preserve">
<value>Gedeelde bibliotheek is niet opgestart in de gegeven tijdsperiode. Idle proces hervat!</value>
<value>Gedeelde bibliotheek is niet opgestart in de gegeven tijdsperiode. Farming proces wordt hervat!</value>
</data>
<data name="BotConnecting" xml:space="preserve">
<value>Verbinden...</value>
@@ -614,7 +663,10 @@ StackTrace:
<data name="BotStopping" xml:space="preserve">
<value>Stoppen...</value>
</data>
<data name="ErrorBotConfigInvalid" xml:space="preserve">
<value>Je bot configuratie is ongeldig. Controleer de inhoud van {0} en probeer het opnieuw!</value>
<comment>{0} will be replaced by file's path</comment>
</data>
<data name="ErrorDatabaseInvalid" xml:space="preserve">
<value>Blijvende database kan niet worden geladen, als het probleem aanhoudt, verwijder dan {0} om de database opnieuw te maken!</value>
<comment>{0} will be replaced by file's path</comment>
@@ -629,16 +681,39 @@ StackTrace:
<data name="Welcome" xml:space="preserve">
<value>Het lijkt erop dat je het programma voor het eerst opstart, welkom!</value>
</data>
<data name="ErrorInvalidCurrentCulture" xml:space="preserve">
<value>De door jou ingevoerde CurrentCulture is ongeldig. ASF zal de standaardtaal blijven gebruiken!</value>
</data>
<data name="TranslationIncomplete" xml:space="preserve">
<value>ASF probeert de {0} taal te gebruiken, maar het vertalen in deze taal was tot {1} compleet. Misschien kan je ons helpen om ASF te vertalen in jouw taal?</value>
<value>ASF probeert de {0} taalmodule te gebruiken, maar het vertalen in deze taal is slechts {1} compleet. Misschien kan je ons helpen om ASF te vertalen in jouw taal?</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>Farmen {0} ({1}) is tijdelijk uitgeschakeld, omdat ASF momenteel niet in staat is om dit spel te spelen.</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 heeft een foutieve ID gedetecteerd voor {0} ({1}) en zal in plaats daarvan ID {2} gaan gebruiken.</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">
<value>{0} V{1}</value>
<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>Dit account is vergrendeld. Farming is permanent niet beschikbaar!</value>
</data>
<data name="BotStatusLocked" xml:space="preserve">
<value>Bot is vergrendeld en kan geen kaarten verzamelen.</value>
</data>
<data name="ErrorFunctionOnlyInHeadlessMode" xml:space="preserve">
<value>Deze functie is alleen beschikbaar in de headless mode!</value>
</data>
<data name="BotOwnedAlready" xml:space="preserve">
<value>Al in bezit: {0}</value>
<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>Toegang geweigerd!</value>
</data>
</root>

View File

@@ -118,11 +118,11 @@
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="AcceptingTrade" xml:space="preserve">
<value>Ruilaanbieding {0} wordt geaccepteerd</value>
<value>Ruilaanbod wordt geaccepteerd: {0}</value>
<comment>{0} will be replaced by trade number</comment>
</data>
<data name="AutoUpdateCheckInfo" xml:space="preserve">
<value>ASF controleert automatisch voor een nieuwe versie om de {0} uren.</value>
<value>ASF controleert automatisch iedere {0} uur voor een nieuwe versie.</value>
<comment>{0} will be replaced by number of hours</comment>
</data>
<data name="Content" xml:space="preserve">
@@ -134,7 +134,7 @@
<comment>{0} will be replaced by name of the configuration property, {1} will be replaced by invalid value</comment>
</data>
<data name="ErrorEarlyFatalExceptionInfo" xml:space="preserve">
<value>ASF V{0} heeft een fatale uitzondering tegengekomen voordat het kern logboek module in staat was om te initialiseren!</value>
<value>ASF V{0} heeft een fatale uitzonderingsfout veroorzaakt voordat het hoofd logboekmodule in staat was om te initialiseren!</value>
<comment>{0} will be replaced by version number</comment>
</data>
<data name="ErrorEarlyFatalExceptionPrint" xml:space="preserve">
@@ -143,12 +143,17 @@ StackTrace:
{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>Afsluiten met een nonzero foutcode!</value>
</data>
<data name="ErrorFailingRequest" xml:space="preserve">
<value>Vezoek mislukt: {0}</value>
<value>Verzoek mislukt: {0}</value>
<comment>{0} will be replaced by URL of the request</comment>
</data>
<data name="ErrorGlobalConfigNotLoaded" xml:space="preserve">
<value>Globale configuratie kon niet worden geladen. Controleer of {0} bestaat en geldig is! Raadpleeg de 'setting up' sectie van de wiki als je niet weet je wat je moet doen.</value>
<comment>{0} will be replaced by file's path</comment>
</data>
<data name="ErrorIsInvalid" xml:space="preserve">
<value>{0} is ongeldig!</value>
<comment>{0} will be replaced by object's name</comment>
@@ -156,7 +161,9 @@ StackTrace:
<data name="ErrorMobileAuthenticatorInvalidDeviceID" xml:space="preserve">
<value>Deze functie wordt niet uitgevoerd als gevolg van de ongeldige DeviceID in ASF 2FA!</value>
</data>
<data name="ErrorNoBotsDefined" xml:space="preserve">
<value>Er zijn geen bots gedefinieerd. Ben je vergeten om ASF te configureren?</value>
</data>
<data name="ErrorObjectIsNull" xml:space="preserve">
<value>{0} is null!</value>
<comment>{0} will be replaced by object's name</comment>
@@ -165,22 +172,28 @@ StackTrace:
<value>Verwerking van {0} mislukt!</value>
<comment>{0} will be replaced by object's name</comment>
</data>
<data name="ErrorRemovingOldBinary" xml:space="preserve">
<value>Het oude ASF-bestand kon niet worden verwijderd. Verwijder {0} handmatig, zodat de update uitgevoerd kan worden!</value>
<comment>{0} will be replaced by file's path</comment>
</data>
<data name="ErrorRequestFailedTooManyTimes" xml:space="preserve">
<value>Verzoek is mislukt na {0} pogingen!</value>
<comment>{0} will be replaced by maximum number of tries</comment>
</data>
<data name="ErrorUpdateCheckFailed" xml:space="preserve">
<value>Controle voor de laatste versie is mislukt!</value>
</data>
<data name="ErrorUpdateNoAssetForThisBinary" xml:space="preserve">
<value>Kon niet verdergaan met updaten omdat er geen bestand bestaat dat gerelateerd is aan de momenteel actieve binary! Controleer of de ASF binary de juiste naam heeft!</value>
<value>Kon niet verdergaan met updaten, omdat er geen bestand verwijst naar de momenteel draaiende versie! Zorg ervoor dat je ASF bestand de correcte naam heeft!</value>
</data>
<data name="ErrorUpdateNoAssets" xml:space="preserve">
<value>Kan niet verdergaan met update omdat deze versie niet alle bestanden omvat!</value>
<value>Kon niet verdergaan met updaten omdat deze updateversie geen bestanden bevat!</value>
</data>
<data name="ErrorUserInputRunningInHeadlessMode" xml:space="preserve">
<value>Aanvraag voor gebruikersinvoer ontvangen, maar het proces draait in headless mode!</value>
<value>Aanvraag voor gebruikersinvoer ontvangen, maar het proces draait in de headless mode!</value>
</data>
<data name="ErrorWCFAccessDenied" xml:space="preserve">
<value>Het verzoek wordt niet in behandeling genomen omdat SteamOwnerID niet is ingesteld!</value>
<value>Het verzoek wordt niet in behandeling genomen omdat het SteamOwnerID niet is ingesteld!</value>
<comment>SteamOwnerID is name of bot config property, it should not be translated</comment>
</data>
<data name="Exiting" xml:space="preserve">
@@ -196,7 +209,7 @@ StackTrace:
<value>Globaal configuratiebestand is verwijderd!</value>
</data>
<data name="IgnoringTrade" xml:space="preserve">
<value>Ruilaanbieding {0} wordt genegeerd</value>
<value>Ruilaanbod wordt genegeerd: {0}</value>
<comment>{0} will be replaced by trade number</comment>
</data>
<data name="LoggingIn" xml:space="preserve">
@@ -210,7 +223,7 @@ StackTrace:
<value>Sessie wordt ververst!</value>
</data>
<data name="RejectingTrade" xml:space="preserve">
<value>Ruilaanbieding {0} wordt afgekeurd</value>
<value>Ruilaanbod wordt afgewezen: {0}</value>
<comment>{0} will be replaced by trade number</comment>
</data>
<data name="Restarting" xml:space="preserve">
@@ -239,7 +252,7 @@ StackTrace:
<comment>{0} will be replaced by status code number/name</comment>
</data>
<data name="Success" xml:space="preserve">
<value>Succes!</value>
<value>Succesvol!</value>
</data>
<data name="TimeSpanDay" xml:space="preserve">
<value>1 dag</value>
@@ -252,7 +265,7 @@ StackTrace:
<value>1 uur</value>
</data>
<data name="TimeSpanHours" xml:space="preserve">
<value>{0} uren</value>
<value>{0} uur</value>
<comment>{0} will be replaced by number of hours</comment>
</data>
<data name="TimeSpanMinute" xml:space="preserve">
@@ -270,37 +283,47 @@ StackTrace:
<comment>{0} will be replaced by number of seconds</comment>
</data>
<data name="UnlockingParentalAccount" xml:space="preserve">
<value>Ouderaccount wordt ontgrendeld...</value>
<value>Ouderlijk toezicht wordt ontgrendeld...</value>
</data>
<data name="UpdateCheckingNewVersion" xml:space="preserve">
<value>Controleren op nieuwe versie...</value>
</data>
<data name="UpdateDownloadingNewVersion" xml:space="preserve">
<value>Nieuwe versie wordt gedownloadt... Onder het wachten, overweeg te doneren als je het gedane werk waardeert! :)</value>
<value>Nieuwe versie wordt gedownload... Als je het gedane werk waardeert, overweeg dan tijdens het wachten om te doneren! :)</value>
</data>
<data name="UpdateFinished" xml:space="preserve">
<value>Bijwerken afgerond!</value>
</data>
<data name="UpdateNewVersionAvailable" xml:space="preserve">
<value>Nieuwe ASF-versie beschikbaar! Overweeg zelf bij te werken!</value>
<value>Nieuwe ASF versie beschikbaar! Overweeg om handmatig bij te werken!</value>
</data>
<data name="UpdateVersionInfo" xml:space="preserve">
<value>Lokale versie: {0} | Externe versie: {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>Voer je mobiele authenticator device ID in (inclusief "android:"):
</value>
<comment>Please note that this translation should end with space</comment>
</data>
<data name="UserInputSteam2FA" xml:space="preserve">
<value>Voer uw 2FA code van uw Steam authenticator app in: </value>
<value>Voer de 2FA code in van je Steam authenticator app: </value>
<comment>Please note that this translation should end with space</comment>
</data>
<data name="UserInputSteamGuard" xml:space="preserve">
<value>Voer de SteamGuard auth code in die naar uw e-mail is gestuurd: </value>
<value>Voer de SteamGuard authenticator-code in die naar je e-mail is verzonden: </value>
<comment>Please note that this translation should end with space</comment>
</data>
<data name="UserInputSteamLogin" xml:space="preserve">
<value>Voer je Steam gebruikersnaam in: </value>
<comment>Please note that this translation should end with space</comment>
</data>
<data name="UserInputSteamParentalPIN" xml:space="preserve">
<value>Voer je Steam ouderlijk toezicht pincode in: </value>
<comment>Please note that this translation should end with space</comment>
</data>
<data name="UserInputSteamPassword" xml:space="preserve">
<value>Voer uw Steam wachtwoord in: </value>
<value>Voer je Steam wachtwoord in: </value>
<comment>Please note that this translation should end with space</comment>
</data>
<data name="UserInputUnknown" xml:space="preserve">
@@ -308,7 +331,7 @@ StackTrace:
<comment>{0} will be replaced by property name. Please note that this translation should end with space</comment>
</data>
<data name="UserInputWCFHost" xml:space="preserve">
<value>Voer uw WCF host in: </value>
<value>Voer je WCF host in: </value>
<comment>Please note that this translation should end with space</comment>
</data>
<data name="WarningUnknownValuePleaseReport" xml:space="preserve">
@@ -316,7 +339,7 @@ StackTrace:
<comment>{0} will be replaced by object's name, {1} will be replaced by value for that object</comment>
</data>
<data name="WarningTooManyGamesToPlay" xml:space="preserve">
<value>Het spelen van meer dan {0} games gelijktijdig is niet mogelijk, alleen de eerste {0} games van {1} worden gebruikt!</value>
<value>Het gelijktijdig spelen van meer dan {0} spellen is niet mogelijk, alleen de eerste {0} spellen van {1} worden gebruikt!</value>
<comment>{0} will be replaced by max number of games, {1} will be replaced by name of the configuration property</comment>
</data>
<data name="WarningWCFIgnoringCommand" xml:space="preserve">
@@ -324,7 +347,7 @@ StackTrace:
<comment>{0} will be replaced by WCF command</comment>
</data>
<data name="ErrorWCFAddressAccessDeniedException" xml:space="preserve">
<value>WCF service kan niet worden gestart vanwege de AddressAccessDeniedException! Als je zelf gebruik wilt maken van de WCF service van ASF, overweeg om ASF te starten als administrator of geef de juiste machtigingen!</value>
<value>WCF service kan niet worden gestart vanwege de AddressAccessDeniedException! Als je gebruik wilt maken van de WCF service van ASF, start ASF als administrator of geef de juiste machtigingen!</value>
</data>
<data name="WCFAnswered" xml:space="preserve">
<value>Beantwoordt aan WCF opdracht: {0} met: {1}</value>
@@ -349,19 +372,19 @@ StackTrace:
<value>Deze bot is al gestopt!</value>
</data>
<data name="BotNotFound" xml:space="preserve">
<value>Kan geen bot vinden genaamd {0}!</value>
<value>Kon geen bot vinden met de naam {0}!</value>
<comment>{0} will be replaced by bot's name query (string)</comment>
</data>
<data name="BotStatusOverview" xml:space="preserve">
<value>Er zijn {0}/{1} bots actief, met een totaal van {2} spellen ({3} kaarten) over om te idlen.</value>
<value>Er zijn {0}/{1} bots actief, met een totaal van {2} spel(len) te spelen en {3} kaart(en) resterend om te verzamelen.</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">
<value>Bot idled spel: {0} ({1}, {2} kaarten resterend) van een totaal van {3} spellen ({4} kaarten) over om te idlen (~{5} resterend).</value>
<value>Bot speelt: {0} ({1}, {2} kaart(en) resterend). Totaal nog {3} spel(len) te spelen en {4} kaart(en) resterend om te verzamelen (~{5} resterend).</value>
<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 built from TimeSpan* translation parts</comment>
</data>
<data name="BotStatusIdlingList" xml:space="preserve">
<value>Bot idled spellen: {0} van een totaal van {1} spellen ({2} kaarten) over om te idlen (~{3} resterend).</value>
<value>Bot speelt de spellen: {0}. Totaal nog {1} spel(len) te spelen en {2} kaart(en) resterend om te verzamelen (~{3} resterend).</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 built from TimeSpan* translation parts</comment>
</data>
<data name="CheckingFirstBadgePage" xml:space="preserve">
@@ -371,65 +394,65 @@ StackTrace:
<value>Andere badge pagina's controleren...</value>
</data>
<data name="ChosenFarmingAlgorithm" xml:space="preserve">
<value>Gekozen idling algoritme: {0}</value>
<value>Gekozen farming algoritme: {0}</value>
<comment>{0} will be replaced by the name of chosen idling algorithm</comment>
</data>
<data name="Done" xml:space="preserve">
<value>Klaar!</value>
<value>Gereed!</value>
</data>
<data name="GamesToIdle" xml:space="preserve">
<value>We hebben een totaal van {0} spellen ({1} kaarten) nog te idlen (~{2} resterende)...</value>
<value>We hebben een totaal van {0} spel(len) en nog {1} kaart(en) te verzamelen (~{2} resterend)...</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 built from TimeSpan* translation parts</comment>
</data>
<data name="IdlingFinished" xml:space="preserve">
<value>Idling klaar!</value>
<value>Farmen is gereed!</value>
</data>
<data name="IdlingFinishedForGame" xml:space="preserve">
<value>Klaar met idlen: {0} ({1}) na {2} speeltijd!</value>
<value>Farmen is gereed: {0} ({1}) na {2} speeltijd!</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 built from TimeSpan* translation parts</comment>
</data>
<data name="IdlingFinishedForGames" xml:space="preserve">
<value>Het idlen is klaar voor de games: {0}</value>
<value>Farmen is gereed voor de spellen: {0}</value>
<comment>{0} will be replaced by list of the games (IDs, numbers), separated by a comma</comment>
</data>
<data name="IdlingStatusForGame" xml:space="preserve">
<value>Idling status voor {0} {1}): {2} kaarten resterend</value>
<value>Farming status voor {0} ({1}): {2} kaart(en) resterend.</value>
<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</comment>
</data>
<data name="IdlingStopped" xml:space="preserve">
<value>Het idlen is gestopt!</value>
<value>Het farmen is gestopt!</value>
</data>
<data name="IgnoredStickyPauseEnabled" xml:space="preserve">
<value>Dit verzoek wordt genegeerd. Permanente pauze staat aan!</value>
</data>
<data name="NothingToIdle" xml:space="preserve">
<value>We hebben niks om te idlen op dit account!</value>
<value>We hebben niets om te farmen op dit account!</value>
</data>
<data name="NowIdling" xml:space="preserve">
<value>Nu aan het idlen: {0} ({1})</value>
<value>Nu aan het farmen: {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>Nu aan het idlen: {0}</value>
<value>Nu aan het farmen: {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>Spelen is op dit moment niet mogelijk, we proberen het later nog een keer!</value>
</data>
<data name="StillIdling" xml:space="preserve">
<value>Nog steeds aan het idlen: {0} ({1})</value>
<value>Nog steeds aan het farmen: {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>Nog steeds aan het idlen: {0}</value>
<value>Nog steeds aan het farmen: {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>Gestopt met idlen: {0} ({1})</value>
<value>Gestopt met farmen: {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>Gestopt met idlen: {0}</value>
<value>Gestopt met farmen: {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">
@@ -439,24 +462,32 @@ StackTrace:
<value>Kon badge informatie niet verkrijgen, we zullen het later opnieuw proberen!</value>
</data>
<data name="WarningCouldNotCheckCardsStatus" xml:space="preserve">
<value>Kaart status kan niet worden gecontroleerd voor {0} ({1}), wij zullen het later nogmaals proberen!</value>
<value>Kaart status kon niet worden gecontroleerd voor {0} ({1}), wij zullen het later nogmaals proberen!</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>Cadeau accepteren: {0}...</value>
<value>Gift accepteren: {0}...</value>
<comment>{0} will be replaced by giftID (number)</comment>
</data>
<data name="BotAccountLimited" xml:space="preserve">
<value>Dit account is gelimiteerd, idle proces is niet beschikbaar totdat de beperking is opgeheven!</value>
<value>Dit account is gelimiteerd, farming proces is niet beschikbaar totdat de beperking is opgeheven!</value>
</data>
<data name="BotAddLicense" xml:space="preserve">
<value>ID: {0} | Status: {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} | Status: {1} | Items: {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>Deze bot is al actief!</value>
</data>
<data name="BotAuthenticatorConverting" xml:space="preserve">
<value>.maFile omzetten naar ASF formaat...</value>
</data>
<data name="BotAuthenticatorImportFinished" xml:space="preserve">
<value>Met succes de mobiele authenticator geimporteerd!</value>
<value>Succesvol de mobiele authenticator geïmporteerd!</value>
</data>
<data name="BotAuthenticatorInvalidDeviceID" xml:space="preserve">
<value>Je DeviceID is incorrect of bestaat niet!</value>
@@ -466,20 +497,20 @@ StackTrace:
<comment>{0} will be replaced by generated 2FA token (string)</comment>
</data>
<data name="BotAutomaticIdlingNowPaused" xml:space="preserve">
<value>Automatisch idlen is gepauzeerd!</value>
<value>Automatisch farmen is gepauzeerd!</value>
</data>
<data name="BotAutomaticIdlingNowResumed" xml:space="preserve">
<value>Automatisch idlen is hervat!</value>
<value>Automatisch farmen is hervat!</value>
</data>
<data name="BotAutomaticIdlingPausedAlready" xml:space="preserve">
<value>Automatisch idling is al gepauzeerd!</value>
<value>Automatisch farmen is al gepauzeerd!</value>
</data>
<data name="BotAutomaticIdlingPausedWithCountdown" xml:space="preserve">
<value>Automatisch idling is nu gepauzeerd! Je hebt {0} minuten om een spel te starten.</value>
<value>Automatisch farmen is nu gepauzeerd! Je hebt {0} minuten om een spel te starten.</value>
<comment>{0} will be replaced by number of minutes</comment>
</data>
<data name="BotAutomaticIdlingResumedAlready" xml:space="preserve">
<value>Automatisch idling is al hervat!</value>
<value>Automatisch farmen is al hervat!</value>
</data>
<data name="BotConnected" xml:space="preserve">
<value>Verbonden met Steam!</value>
@@ -491,14 +522,14 @@ StackTrace:
<value>Verbinding verbreken...</value>
</data>
<data name="BotEncryptedPassword" xml:space="preserve">
<value>[{0}] Wachtwoord: {1}</value>
<value>[{0}] wachtwoord: {1}</value>
<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>Deze bot wordt niet gestart omdat hij uitgeschakeld is in het configuratie bestand!</value>
<value>Deze bot wordt niet gestart omdat hij uitgeschakeld is in het configuratiebestand!</value>
</data>
<data name="BotInvalidAuthenticatorDuringLogin" xml:space="preserve">
<value>TwoFactorCodeMisMatch foutmelding {0} ontvangen, dit betekent bijna altijd de verkeerde ASF 2FA login informatie, afbreken!</value>
<value>TwoFactorCodeMisMatch foutmelding {0} keer ontvangen. Dit betekent meestal de verkeerde ASF 2FA login informatie, afbreken!</value>
<comment>{0} will be replaced by maximum allowed number of failed 2FA attempts</comment>
</data>
<data name="BotLoggedOff" xml:space="preserve">
@@ -512,14 +543,13 @@ StackTrace:
<value>Inloggen...</value>
</data>
<data name="BotLogonSessionReplaced" xml:space="preserve">
<value>Het lijkt erop dat dit account wordt gebruikt in een ander ASF instantie, met onbepaald gedrag, weigeren om het draaiende te houden!</value>
<value>Dit account wordt waarschijnlijk al gebruikt door een andere ASF instantie, wat wordt gezien als ongedefinieerd gedrag. Weigeren om het draaiende te houden!</value>
</data>
<data name="BotLootingFailed" xml:space="preserve">
<value>Handelsvoorstel mislukt!</value>
<value>Ruilaanbod mislukt!</value>
</data>
<data name="BotLootingMasterNotDefined" xml:space="preserve">
<value>Trade kon niet verzonden worden, omdat SteamMasterID niet is ingesteld!</value>
<comment>SteamMasterID is name of bot config property, it should not be translated</comment>
<value>Ruilaanbod kon niet verzonden worden omdat er geen gebruiker is toegewezen met master permissies!</value>
</data>
<data name="BotLootingNoLootableTypes" xml:space="preserve">
<value>Je hebt geen lootable types ingesteld!</value>
@@ -531,17 +561,19 @@ StackTrace:
<value>Looting is nu ingeschakeld!</value>
</data>
<data name="BotLootingSuccess" xml:space="preserve">
<value>Trade verzoek verzonden!</value>
<value>Ruilaanbod verzonden!</value>
</data>
<data name="BotLootingTemporarilyDisabled" xml:space="preserve">
<value>Looting is tijdelijk uitgeschakeld!</value>
</data>
<data name="BotLootingYourself" xml:space="preserve">
<value>Je kan je zelf niet looten!</value>
<value>Je kan jezelf niet looten!</value>
</data>
<data name="BotNoASFAuthenticator" xml:space="preserve">
<value>Deze bot heeft ASF 2FA nog niet ingeschakeld! Ben je vergeten om je authenticator te importeren als ASF 2FA?</value>
</data>
<data name="BotNotConnected" xml:space="preserve">
<value>Deze bot instatie is niet verbonden!</value>
<value>Deze bot is niet verbonden!</value>
</data>
<data name="BotNotOwnedYet" xml:space="preserve">
<value>Nog niet in bezit: {0}</value>
@@ -551,31 +583,48 @@ StackTrace:
<value>Al in bezit: {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="BotRateLimitExceeded" xml:space="preserve">
<value>Aanvraaglimiet overschreden, we zullen het over {0} minuten opnieuw proberen...</value>
<comment>{0} will be replaced by number of minutes</comment>
</data>
<data name="BotReconnecting" xml:space="preserve">
<value>Opnieuw verbinden...</value>
</data>
<data name="BotRedeem" xml:space="preserve">
<value>Code: {0} | Status: {1}</value>
<comment>{0} will be replaced by cd-key (string), {1} will be replaced by status string</comment>
</data>
<data name="BotRedeemWithItems" xml:space="preserve">
<value>Code: {0} | Status: {1} | Items: {2}</value>
<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>Verlopen login sleutel verwijderd!</value>
<value>Verlopen inlogcode verwijderd!</value>
</data>
<data name="BotStatusNotIdling" xml:space="preserve">
<value>Bot is niks aan het idlen.</value>
<value>Bot is niet aan het farmen.</value>
</data>
<data name="BotStatusNotConnected" xml:space="preserve">
<value>Bot is niet verbonden.</value>
<data name="BotStatusLimited" xml:space="preserve">
<value>Bot is gelimiteerd en kan geen kaarten verzamelen.</value>
</data>
<data name="BotStatusConnecting" xml:space="preserve">
<value>Bot is aan het verbinden met het Steam netwerk.</value>
</data>
<data name="BotStatusNotRunning" xml:space="preserve">
<value>Bot is niet actief.</value>
</data>
<data name="BotStatusPaused" xml:space="preserve">
<value>Bot is gepauzeerd of wordt uitgevoerd in de handmatige modus.</value>
</data>
<data name="BotStatusPlayingNotAvailable" xml:space="preserve">
<value>Bot is momenteel in gebruik.</value>
</data>
<data name="BotUnableToConnect" xml:space="preserve">
<value>Niet in staat om op Steam in te loggen: {0}</value>
<value>Kan geen verbinding maken met Steam: {0}</value>
<comment>{0} will be replaced by failure reason (string)</comment>
</data>
<data name="BotUnableToLogin" xml:space="preserve">
<value>Niet in staat om op Steam inteloggen: {0}/{1}</value>
<value>Kan niet inloggen op 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">
@@ -583,7 +632,7 @@ StackTrace:
<comment>{0} will be replaced by object's name</comment>
</data>
<data name="UnusedKeys" xml:space="preserve">
<value>Ongebruikte cd-keys: {0}</value>
<value>Ongebruikte codes: {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">
@@ -591,16 +640,16 @@ StackTrace:
<comment>{0} will be replaced by failure reason (string)</comment>
</data>
<data name="BotConnectionLost" xml:space="preserve">
<value>Verbinding met Steam netwerk onderbroken. Herverbinden...</value>
<value>Verbinding met Steam netwerk verbroken. Opnieuw verbinden...</value>
</data>
<data name="BotAccountFree" xml:space="preserve">
<value>Account is niet meer bezet: idling proces hervat!</value>
<value>Account is niet meer bezet: farming proces hervat!</value>
</data>
<data name="BotAccountOccupied" xml:space="preserve">
<value>Account is momenteel in gebruik: ASF zal het idlen hervatten wanneer het vrijkomt...</value>
<value>Account is momenteel in gebruik: ASF zal het farmen hervatten wanneer het account weer beschikbaar is...</value>
</data>
<data name="BotAutomaticIdlingPauseTimeout" xml:space="preserve">
<value>Gedeelde bibliotheek is niet opgestart in de gegeven tijdsperiode. Idle proces hervat!</value>
<value>Gedeelde bibliotheek is niet opgestart in de gegeven tijdsperiode. Farming proces wordt hervat!</value>
</data>
<data name="BotConnecting" xml:space="preserve">
<value>Verbinden...</value>
@@ -614,9 +663,12 @@ StackTrace:
<data name="BotStopping" xml:space="preserve">
<value>Stoppen...</value>
</data>
<data name="ErrorBotConfigInvalid" xml:space="preserve">
<value>Je bot configuratie is ongeldig. Controleer de inhoud van {0} en probeer het opnieuw!</value>
<comment>{0} will be replaced by file's path</comment>
</data>
<data name="ErrorDatabaseInvalid" xml:space="preserve">
<value>Blijvende database kan niet worden geladen, als het probleem aanhoudt, verwijder dan {0} om de database te recreëren!</value>
<value>Database kon niet worden geladen. Als het probleem aanhoudt, verwijder dan {0} om de database opnieuw aan te maken!</value>
<comment>{0} will be replaced by file's path</comment>
</data>
<data name="Initializing" xml:space="preserve">
@@ -624,21 +676,44 @@ StackTrace:
<comment>{0} will be replaced by service name that is being initialized</comment>
</data>
<data name="WarningPrivacyPolicy" xml:space="preserve">
<value>Raadpleeg onze privacy beleid op de ASF Wiki als je bezorgd bent over wat ASF in feite doet!</value>
<value>Bij twijfel of onduidelijkheid, raadpleeg ons privacybeleid op de ASF Wiki om meer te weten te komen wat ASF precies doet!</value>
</data>
<data name="Welcome" xml:space="preserve">
<value>Het lijkt erop dat je het programma voor het eerst start, welkom!</value>
</data>
<data name="ErrorInvalidCurrentCulture" xml:space="preserve">
<value>De door jou ingevoerde CurrentCulture is ongeldig. ASF zal de standaardtaal blijven gebruiken!</value>
</data>
<data name="TranslationIncomplete" xml:space="preserve">
<value>ASF probeert de {0} taal te gebruiken, maar het vertalen in deze taal was tot {1} compleet. Misschien kan je ons helpen om ASF te vertalen in jouw taal?</value>
<value>ASF probeert de {0} taalmodule te gebruiken, maar het vertalen in deze taal is slechts {1} compleet. Misschien kan je ons helpen om ASF te vertalen in jouw taal?</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>Farmen {0} ({1}) is tijdelijk uitgeschakeld, omdat ASF momenteel niet in staat is om dit spel te spelen.</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 heeft een foutieve ID gedetecteerd voor {0} ({1}) en zal in plaats daarvan ID {2} gaan gebruiken.</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">
<value>{0} V{1}</value>
<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>Dit account is vergrendeld. Farming is permanent niet beschikbaar!</value>
</data>
<data name="BotStatusLocked" xml:space="preserve">
<value>Bot is vergrendeld en kan geen kaarten verzamelen.</value>
</data>
<data name="ErrorFunctionOnlyInHeadlessMode" xml:space="preserve">
<value>Deze functie is alleen beschikbaar in de headless mode!</value>
</data>
<data name="BotOwnedAlready" xml:space="preserve">
<value>Al in bezit: {0}</value>
<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>Toegang geweigerd!</value>
</data>
</root>

View File

@@ -370,4 +370,5 @@
</root>

View File

@@ -549,8 +549,7 @@ StackTrace:
<value>Oferta wymiany nie powiodła się!</value>
</data>
<data name="BotLootingMasterNotDefined" xml:space="preserve">
<value>Oferta wymiany nie mogła zostać wysłana, ponieważ SteamMasterID nie został zdefiniowany!</value>
<comment>SteamMasterID is name of bot config property, it should not be translated</comment>
<value>Oferta wymiany nie mogła zostać wysłana, ponieważ żaden użytkownik z dostępem "master" nie został zdefiniowany!</value>
</data>
<data name="BotLootingNoLootableTypes" xml:space="preserve">
<value>Nie skonfigurowałeś żadnych typów do wysłania!</value>
@@ -608,8 +607,8 @@ StackTrace:
<data name="BotStatusLimited" xml:space="preserve">
<value>Bot jest ograniczony i nie może otrzymać żadnych kart poprzez farmienie.</value>
</data>
<data name="BotStatusNotConnected" xml:space="preserve">
<value>Bot nie jest połączony.</value>
<data name="BotStatusConnecting" xml:space="preserve">
<value>Bot łączy się z siecią Steam.</value>
</data>
<data name="BotStatusNotRunning" xml:space="preserve">
<value>Bot nie jest uruchomiony.</value>
@@ -714,4 +713,7 @@ StackTrace:
<value>Już posiadane: {0}</value>
<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>Odmowa dostępu!</value>
</data>
</root>

View File

@@ -151,7 +151,10 @@ StackTrace:
<value>Erro de solicitação: {0}</value>
<comment>{0} will be replaced by URL of the request</comment>
</data>
<data name="ErrorGlobalConfigNotLoaded" xml:space="preserve">
<value>A configuração global não pôde ser carregada, tenha certeza que {0} existe e é válido! se estiver com alguma dúvida, siga o guia de configuração na Wiki.</value>
<comment>{0} will be replaced by file's path</comment>
</data>
<data name="ErrorIsInvalid" xml:space="preserve">
<value>{0} é inválido!</value>
<comment>{0} will be replaced by object's name</comment>
@@ -159,7 +162,9 @@ StackTrace:
<data name="ErrorMobileAuthenticatorInvalidDeviceID" xml:space="preserve">
<value>Recusando a execução desta função devido ao DeviceID inválido no ASF 2FA!</value>
</data>
<data name="ErrorNoBotsDefined" xml:space="preserve">
<value>Nenhum bot configurado, será que você não esqueceu de algo?</value>
</data>
<data name="ErrorObjectIsNull" xml:space="preserve">
<value>{0} é nulo!</value>
<comment>{0} will be replaced by object's name</comment>
@@ -168,7 +173,10 @@ StackTrace:
<value>Falha ao analisar {0}!</value>
<comment>{0} will be replaced by object's name</comment>
</data>
<data name="ErrorRemovingOldBinary" xml:space="preserve">
<value>Não foi possível remover o arquivo {0}, Por favor remova-o manualmente para que a atualização funcione normalmente!</value>
<comment>{0} will be replaced by file's path</comment>
</data>
<data name="ErrorRequestFailedTooManyTimes" xml:space="preserve">
<value>A solicitação falhou após {0} tentativas!</value>
<comment>{0} will be replaced by maximum number of tries</comment>
@@ -361,7 +369,7 @@ StackTrace:
<comment>{0} will be replaced by WCF hostname</comment>
</data>
<data name="BotAlreadyStopped" xml:space="preserve">
<value>Esse bot já está parado!</value>
<value>Este bot já parou!</value>
</data>
<data name="BotNotFound" xml:space="preserve">
<value>Não foi possível encontrar nenhum bot chamado {0}!</value>
@@ -450,7 +458,9 @@ StackTrace:
<data name="UnknownCommand" xml:space="preserve">
<value>Comando desconhecido!</value>
</data>
<data name="WarningCouldNotCheckBadges" xml:space="preserve">
<value>Não foi possível obter informações das insígnias, tentaremos novamente mais tarde!</value>
</data>
<data name="WarningCouldNotCheckCardsStatus" xml:space="preserve">
<value>Não foi possível verificar o estado das cartas de: {0} ({1}), tentaremos novamente mais tarde!</value>
<comment>{0} will be replaced by game's ID (number), {1} will be replaced by game's name</comment>
@@ -459,7 +469,9 @@ StackTrace:
<value>Aceitando presente: {0}...</value>
<comment>{0} will be replaced by giftID (number)</comment>
</data>
<data name="BotAccountLimited" xml:space="preserve">
<value>Esta conta é limitada, processo de farm não está disponível até que a restrição seja removida!</value>
</data>
<data name="BotAddLicense" xml:space="preserve">
<value>ID: {0} | Status: {1}</value>
<comment>{0} will be replaced by game's ID (number), {1} will be replaced by status string</comment>
@@ -484,8 +496,12 @@ StackTrace:
<value>Código de autenticação: {0}</value>
<comment>{0} will be replaced by generated 2FA token (string)</comment>
</data>
<data name="BotAutomaticIdlingNowPaused" xml:space="preserve">
<value>O processo de farm automático foi pausado!</value>
</data>
<data name="BotAutomaticIdlingNowResumed" xml:space="preserve">
<value>O processo de farm automático foi resumido!</value>
</data>
<data name="BotAutomaticIdlingPausedAlready" xml:space="preserve">
<value>A coleta automática de cartas já está pausada!</value>
</data>
@@ -532,10 +548,7 @@ StackTrace:
<data name="BotLootingFailed" xml:space="preserve">
<value>Proposta de troca falhou!</value>
</data>
<data name="BotLootingMasterNotDefined" xml:space="preserve">
<value>A troca não pôde ser enviada pois o SteamMasterID não foi definido!</value>
<comment>SteamMasterID is name of bot config property, it should not be translated</comment>
</data>
<data name="BotLootingNoLootableTypes" xml:space="preserve">
<value>Você não configurou nenhum tipo de item para coletar!</value>
</data>
@@ -568,7 +581,10 @@ StackTrace:
<value>Já possui: {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="BotRateLimitExceeded" xml:space="preserve">
<value>Tempo limite atingido!; tentando novamente em {0} minutos...</value>
<comment>{0} will be replaced by number of minutes</comment>
</data>
<data name="BotReconnecting" xml:space="preserve">
<value>Reconectando...</value>
</data>
@@ -589,8 +605,8 @@ StackTrace:
<data name="BotStatusLimited" xml:space="preserve">
<value>Bot é limitado e não pode receber nenhuma carta através da coleta.</value>
</data>
<data name="BotStatusNotConnected" xml:space="preserve">
<value>Bot não está conectado.</value>
<data name="BotStatusConnecting" xml:space="preserve">
<value>Bot está se conectando à rede Steam.</value>
</data>
<data name="BotStatusNotRunning" xml:space="preserve">
<value>Bot não está em execução.</value>
@@ -624,8 +640,12 @@ StackTrace:
<data name="BotConnectionLost" xml:space="preserve">
<value>Conexão com a rede Steam perdida. Reconectando...</value>
</data>
<data name="BotAccountFree" xml:space="preserve">
<value>A conta não está mais sendo usada, resumindo processo de farm!</value>
</data>
<data name="BotAccountOccupied" xml:space="preserve">
<value>Conta atualmente em uso; Resumindo processo de farm quando você terminar de jogar!</value>
</data>
<data name="BotConnecting" xml:space="preserve">
<value>Conectando...</value>
@@ -637,7 +657,10 @@ StackTrace:
<data name="BotStopping" xml:space="preserve">
<value>Parando...</value>
</data>
<data name="ErrorBotConfigInvalid" xml:space="preserve">
<value>A configuração do bot é inválida, verifique o arquivo {0} e tente novamente!</value>
<comment>{0} will be replaced by file's path</comment>
</data>
<data name="ErrorDatabaseInvalid" xml:space="preserve">
<value>Não foi possível carregar o banco de dados, caso o problema persista, remova {0} para recriar o banco de dados!</value>
<comment>{0} will be replaced by file's path</comment>
@@ -652,7 +675,9 @@ StackTrace:
<data name="Welcome" xml:space="preserve">
<value>Parece que é a sua primeira vez abrindo o programa, bem-vindo(a)!</value>
</data>
<data name="ErrorInvalidCurrentCulture" xml:space="preserve">
<value>O valor 'CurrentCulture' fornecido é inválido, o ASF continuará executando com o valor padrão!</value>
</data>
<data name="TranslationIncomplete" xml:space="preserve">
<value>O ASF tentará usar seu preferido {0} idle, mas a tradução para este idioma foi concluída somente em {1}. Talvez você possa nos ajudar a melhorar a tradução do ASF ao seu idioma?</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>
@@ -661,7 +686,10 @@ StackTrace:
<value>{0} processo de receber cartas ({1}) está temporariamente desativada, ASF não é capaz de jogar esse jogo no momento.</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 detectou incompatibilidade de ID para {0} ({1}) e usará o ID de {2} no lugar.</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">
<value>{0} V{1}</value>
<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>
@@ -672,9 +700,12 @@ StackTrace:
<data name="BotStatusLocked" xml:space="preserve">
<value>Bot está bloqueado e não pode receber nenhuma carta através da coleta.</value>
</data>
<data name="ErrorFunctionOnlyInHeadlessMode" xml:space="preserve">
<value>Esta função está disponível apenas no modo 'Headless', de preferencia em um server!</value>
</data>
<data name="BotOwnedAlready" xml:space="preserve">
<value>Já possui: {0}</value>
<comment>{0} will be replaced by game's ID (number), {1} will be replaced by game's name</comment>
</data>
</root>

View File

@@ -144,12 +144,17 @@ StackTrace:
{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>Saindo com erro diferente de zero!</value>
</data>
<data name="ErrorFailingRequest" xml:space="preserve">
<value>Pedido falhou em: {0}</value>
<comment>{0} will be replaced by URL of the request</comment>
</data>
<data name="ErrorGlobalConfigNotLoaded" xml:space="preserve">
<value>Configuração global não pôde ser carregada, por favor certefique-se que {0} existe e é válido! Siga os passos na wiki se tiver dúvidas.</value>
<comment>{0} will be replaced by file's path</comment>
</data>
<data name="ErrorIsInvalid" xml:space="preserve">
<value>{0} é inválido!</value>
<comment>{0} will be replaced by object's name</comment>
@@ -157,7 +162,9 @@ StackTrace:
<data name="ErrorMobileAuthenticatorInvalidDeviceID" xml:space="preserve">
<value>Recusando a executação desta função devido ao ID de dispositivo ser inválido no ASF 2FA!</value>
</data>
<data name="ErrorNoBotsDefined" xml:space="preserve">
<value>Sem bots definidos, esqueceste-te de configurar o teu ASF?</value>
</data>
<data name="ErrorObjectIsNull" xml:space="preserve">
<value>{0} é nulo!</value>
<comment>{0} will be replaced by object's name</comment>
@@ -166,8 +173,14 @@ StackTrace:
<value>Falha ao analisar {0}!</value>
<comment>{0} will be replaced by object's name</comment>
</data>
<data name="ErrorRemovingOldBinary" xml:space="preserve">
<value>Não foi possível remover o velho ASF, por favor remova {0} manualmente para a função de atualização funcionar!</value>
<comment>{0} will be replaced by file's path</comment>
</data>
<data name="ErrorRequestFailedTooManyTimes" xml:space="preserve">
<value>O pedido falhou após {0} tentativas!</value>
<comment>{0} will be replaced by maximum number of tries</comment>
</data>
<data name="ErrorUpdateCheckFailed" xml:space="preserve">
<value>Não foi possível verificar a ultima versão!</value>
</data>
@@ -289,7 +302,10 @@ StackTrace:
<value>Versão local: {0} | Versão remota: {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>Por favor digita o ID do teu dispositivo autenticador móvel (incluindo "android:"): </value>
<comment>Please note that this translation should end with space</comment>
</data>
@@ -417,9 +433,17 @@ StackTrace:
<comment>{0} will be replaced by giftID (number)</comment>
</data>
<data name="BotAddLicense" xml:space="preserve">
<value>ID: {0} | Estado: {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} | Estado: {1} | Items: {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>Este bot já está em funcionamento!</value>
</data>
<data name="BotAuthenticatorConverting" xml:space="preserve">
<value>A converter ficheiro .maFile em formato ASF...</value>
</data>
@@ -482,10 +506,7 @@ inválidas, abortando!</value>
<data name="BotLootingFailed" xml:space="preserve">
<value>A Troca falhou!</value>
</data>
<data name="BotLootingMasterNotDefined" xml:space="preserve">
<value>A troca não foi enviada porque o "SteamMasterID" não está definido!</value>
<comment>SteamMasterID is name of bot config property, it should not be translated</comment>
</data>
<data name="BotLootingNoLootableTypes" xml:space="preserve">
<value>Não tens tipos de loot defenidos!</value>
</data>
@@ -576,7 +597,13 @@ inválidas, abortando!</value>
<data name="BotVersion" xml:space="preserve">
<value>{0} V{1}</value>
<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>Esta conta está bloqueada, está permanentemente indisponível o processo de farmar!</value>
</data>

View File

@@ -549,8 +549,7 @@ StackTrace:
<value>Trade offer failed!</value>
</data>
<data name="BotLootingMasterNotDefined" xml:space="preserve">
<value>Trade couldn't be sent because SteamMasterID is not defined!</value>
<comment>SteamMasterID is name of bot config property, it should not be translated</comment>
<value>Trade couldn't be sent because there is no user with master permission defined!</value>
</data>
<data name="BotLootingNoLootableTypes" xml:space="preserve">
<value>You don't have any lootable types set!</value>
@@ -608,8 +607,8 @@ StackTrace:
<data name="BotStatusLimited" xml:space="preserve">
<value>Bot is limited and can't drop any cards through idling.</value>
</data>
<data name="BotStatusNotConnected" xml:space="preserve">
<value>Bot is not connected.</value>
<data name="BotStatusConnecting" xml:space="preserve">
<value>Bot is connecting to Steam network.</value>
</data>
<data name="BotStatusNotRunning" xml:space="preserve">
<value>Bot is not running.</value>
@@ -714,4 +713,7 @@ StackTrace:
<value>Owned already: {0}</value>
<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>Access denied!</value>
</data>
</root>

View File

@@ -548,10 +548,7 @@ StackTrace:
<data name="BotLootingFailed" xml:space="preserve">
<value>Oferta de schimb nu a reușit!</value>
</data>
<data name="BotLootingMasterNotDefined" xml:space="preserve">
<value>Oferta de schimb nu a putut fi trimisă deoarece SteamMasterID nu este definit!</value>
<comment>SteamMasterID is name of bot config property, it should not be translated</comment>
</data>
<data name="BotLootingNoLootableTypes" xml:space="preserve">
<value>Nu aveți niciun tip colectabil!</value>
</data>
@@ -608,8 +605,8 @@ StackTrace:
<data name="BotStatusLimited" xml:space="preserve">
<value>Bot-ul este limitat și nu poate pica cartonașe prin farmare.</value>
</data>
<data name="BotStatusNotConnected" xml:space="preserve">
<value>Bot-ul nu este conectat.</value>
<data name="BotStatusConnecting" xml:space="preserve">
<value>Botul se conectează la rețeaua Steam.</value>
</data>
<data name="BotStatusNotRunning" xml:space="preserve">
<value>Bot-ul nu rulează.</value>
@@ -714,4 +711,5 @@ StackTrace:
<value>Deținute deja: {0}</value>
<comment>{0} will be replaced by game's ID (number), {1} will be replaced by game's name</comment>
</data>
</root>

View File

@@ -339,7 +339,7 @@
<comment>{0} will be replaced by object's name, {1} will be replaced by value for that object</comment>
</data>
<data name="WarningTooManyGamesToPlay" xml:space="preserve">
<value>Запуск более чем {0} игр одновременно невозможен, лишь первые {0} из свойства {1} будут использованы!</value>
<value>Невозможен запуск более {0} игр одновременно, будут использованы только первые {0} записей из параметра {1}!</value>
<comment>{0} will be replaced by max number of games, {1} will be replaced by name of the configuration property</comment>
</data>
<data name="WarningWCFIgnoringCommand" xml:space="preserve">
@@ -470,14 +470,14 @@
<comment>{0} will be replaced by giftID (number)</comment>
</data>
<data name="BotAccountLimited" xml:space="preserve">
<value>Это ограниченный аккаунт, фарм невозможен до снятия ограничений!</value>
<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">
@@ -549,8 +549,7 @@
<value>Предложение обмена не удалось!</value>
</data>
<data name="BotLootingMasterNotDefined" xml:space="preserve">
<value>Обмен не может быть отправлен, поскольку SteamMasterID не задан!</value>
<comment>SteamMasterID is name of bot config property, it should not be translated</comment>
<value>Невозможно отправить обмен, потому что не задано пользователя с правами "master"!</value>
</data>
<data name="BotLootingNoLootableTypes" xml:space="preserve">
<value>У вас не указаны типы вещей для лута!</value>
@@ -585,18 +584,18 @@
<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 number of minutes</comment>
</data>
<data name="BotReconnecting" xml:space="preserve">
<value>Переподключение...</value>
</data>
<data name="BotRedeem" xml:space="preserve">
<value>Ключ: {0} | Статус: {1}</value>
<value>Ключ: {0} | Состояние: {1}</value>
<comment>{0} will be replaced by cd-key (string), {1} will be replaced by status string</comment>
</data>
<data name="BotRedeemWithItems" xml:space="preserve">
<value>Ключ: {0} | Статус: {1} | Получено: {2}</value>
<value>Ключ: {0} | Состояние: {1} | Товары: {2}</value>
<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">
@@ -606,10 +605,10 @@
<value>Бот ничего не фармит.</value>
</data>
<data name="BotStatusLimited" xml:space="preserve">
<value>Бот имеет ограничения и не может фармить карты.</value>
<value>Бот имеет ограниченные права и не может фармить карты.</value>
</data>
<data name="BotStatusNotConnected" xml:space="preserve">
<value>Бот не подключён.</value>
<data name="BotStatusConnecting" xml:space="preserve">
<value>Бот подключается к сети Steam.</value>
</data>
<data name="BotStatusNotRunning" xml:space="preserve">
<value>Бот не запущен.</value>
@@ -659,7 +658,7 @@
<value>Не удалось отключить клиент, отказ от бота!</value>
</data>
<data name="BotSteamDirectoryInitializationFailed" xml:space="preserve">
<value>Не удаётся инициализировать SteamDirectory: подключение к сети Steam займёт больше времени, чем обычно!</value>
<value>Не удаётся инициализировать SteamDirectory: подключение к сети Steam может занять больше времени, чем обычно!</value>
</data>
<data name="BotStopping" xml:space="preserve">
<value>Остановка...</value>
@@ -714,4 +713,7 @@
<value>Уже имеет: {0}</value>
<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>
</data>
</root>

View File

@@ -0,0 +1,291 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" id="root">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace"/>
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0"/>
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string"/>
<xsd:attribute name="type" type="xsd:string"/>
<xsd:attribute name="mimetype" type="xsd:string"/>
<xsd:attribute ref="xml:space"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string"/>
<xsd:attribute name="name" type="xsd:string"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1"/>
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2"/>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1"/>
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3"/>
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4"/>
<xsd:attribute ref="xml:space"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1"/>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required"/>
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>

View File

@@ -484,10 +484,7 @@ StackTrace:
<data name="BotLootingFailed" xml:space="preserve">
<value>Ponuda za ramenu nije uspela!</value>
</data>
<data name="BotLootingMasterNotDefined" xml:space="preserve">
<value>Razmena nije mogla biti poslata zato što SteamMasterID nije definisan!</value>
<comment>SteamMasterID is name of bot config property, it should not be translated</comment>
</data>
<data name="BotLootingNoLootableTypes" xml:space="preserve">
<value>Nemate bilo kakve lootable tipove podešene!</value>
</data>
@@ -586,4 +583,5 @@ StackTrace:
</root>

View File

@@ -297,6 +297,7 @@
</root>

View File

@@ -157,7 +157,9 @@ StackTrace:
<data name="ErrorMobileAuthenticatorInvalidDeviceID" xml:space="preserve">
<value>Vägrar att köra denna funktion på grund av ogiltlig DeviceID i ASF 2FA!</value>
</data>
<data name="ErrorNoBotsDefined" xml:space="preserve">
<value>Inga bottar är konfigurerade, har du glömt att konfigurera ASF?</value>
</data>
<data name="ErrorObjectIsNull" xml:space="preserve">
<value>{0} är null!</value>
<comment>{0} will be replaced by object's name</comment>
@@ -166,8 +168,14 @@ StackTrace:
<value>Tolkning {0} misslyckades!</value>
<comment>{0} will be replaced by object's name</comment>
</data>
<data name="ErrorRemovingOldBinary" xml:space="preserve">
<value>Kunde inte ta bort den gamla ASF binären, vänligen ta bort {0} manuellt för att uppdateringsfunktionen ska fungera!</value>
<comment>{0} will be replaced by file's path</comment>
</data>
<data name="ErrorRequestFailedTooManyTimes" xml:space="preserve">
<value>Begäran misslyckades efter {0} försök!</value>
<comment>{0} will be replaced by maximum number of tries</comment>
</data>
<data name="ErrorUpdateCheckFailed" xml:space="preserve">
<value>Kunde inte kontrollera senaste versionen!</value>
</data>
@@ -356,7 +364,9 @@ StackTrace:
<value>Startar WCF-servern på {0}...</value>
<comment>{0} will be replaced by WCF hostname</comment>
</data>
<data name="BotAlreadyStopped" xml:space="preserve">
<value>Bot-instansen har redan stoppats!</value>
</data>
<data name="BotNotFound" xml:space="preserve">
<value>Kunde inte hitta någon bot vid namn {0}!</value>
<comment>{0} will be replaced by bot's name query (string)</comment>
@@ -434,7 +444,7 @@ StackTrace:
<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>Farming stoppad: {0} ({1})</value>
<value>Farmning stoppad: {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">
@@ -453,7 +463,9 @@ StackTrace:
<value>Accepterar gåva: {0}...</value>
<comment>{0} will be replaced by giftID (number)</comment>
</data>
<data name="BotAccountLimited" xml:space="preserve">
<value>Detta konto är begränsad av Steam, farmning funktionaliteten är otillgänglig tills begränsningen tas bort!</value>
</data>
<data name="BotAlreadyRunning" xml:space="preserve">
@@ -472,8 +484,12 @@ StackTrace:
<value>2FA Token: {0}</value>
<comment>{0} will be replaced by generated 2FA token (string)</comment>
</data>
<data name="BotAutomaticIdlingNowPaused" xml:space="preserve">
<value>Automatisk farmning är pausad!</value>
</data>
<data name="BotAutomaticIdlingNowResumed" xml:space="preserve">
<value>Automatisk farmning är återupptagen!</value>
</data>
<data name="BotAutomaticIdlingPausedAlready" xml:space="preserve">
<value>Automatisk farmning är redan pausad!</value>
</data>
@@ -520,10 +536,7 @@ StackTrace:
<data name="BotLootingFailed" xml:space="preserve">
<value>Bytesförslag misslyckades!</value>
</data>
<data name="BotLootingMasterNotDefined" xml:space="preserve">
<value>Bytesförslag kunde inte skickas eftersom SteamMasterId inte är definierat!</value>
<comment>SteamMasterID is name of bot config property, it should not be translated</comment>
</data>
<data name="BotLootingNoLootableTypes" xml:space="preserve">
<value>Du har inga föremålstyper att skicka!</value>
</data>
@@ -574,8 +587,8 @@ StackTrace:
<data name="BotStatusLimited" xml:space="preserve">
<value>Botten är begrensad och kan inte få några kort via farmning.</value>
</data>
<data name="BotStatusNotConnected" xml:space="preserve">
<value>Bot är inte ansluten.</value>
<data name="BotStatusConnecting" xml:space="preserve">
<value>Botten ansluter till Steam-nätverket.</value>
</data>
<data name="BotStatusNotRunning" xml:space="preserve">
<value>Bot körs inte.</value>
@@ -648,11 +661,17 @@ StackTrace:
<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>Detta konto är låst, farming-processen är permanent otillgänglig!</value>
<value>Detta konto är låst, farmning-processen är permanent otillgänglig!</value>
</data>
<data name="BotStatusLocked" xml:space="preserve">
<value>Botten är begrensad och kan inte få några kort via farmning.</value>
</data>
<data name="BotOwnedAlready" xml:space="preserve">
<value>Ägs redan: {0}</value>
<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>Åtkomst nekad!</value>
</data>
</root>

View File

@@ -285,6 +285,7 @@
</root>

View File

@@ -118,7 +118,7 @@
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="AcceptingTrade" xml:space="preserve">
<value>Takas onaylanıyor: {0}</value>
<value>Onaylanan Takas: {0}</value>
<comment>{0} will be replaced by trade number</comment>
</data>
<data name="AutoUpdateCheckInfo" xml:space="preserve">
@@ -139,8 +139,8 @@
<comment>{0} will be replaced by version number</comment>
</data>
<data name="ErrorEarlyFatalExceptionPrint" xml:space="preserve">
<value>Beklenmeyen durum: {0}() {1}
Hata bilgileri:
<value>İstisna: {0}() {1}
Yığın izleme:
{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>
@@ -160,7 +160,7 @@ Hata bilgileri:
<comment>{0} will be replaced by object's name</comment>
</data>
<data name="ErrorMobileAuthenticatorInvalidDeviceID" xml:space="preserve">
<value>2FA doğrulamasındaki geçersiz DeviceID değeri sebebiyle işlem yürütülemedi!</value>
<value>ASF'deki 2 Faktörlü Doğrulamadaki geçersiz DeviceID'nin geçersiz olması nedeniyle işlem yürütülemedi!</value>
</data>
<data name="ErrorNoBotsDefined" xml:space="preserve">
<value>Hiçbir bot tanımlanmadı, ASF'nizi yapılandırmayı unuttunuz mu?</value>
@@ -185,13 +185,13 @@ Hata bilgileri:
<value>En son sürüm kontrol edilemedi!</value>
</data>
<data name="ErrorUpdateNoAssetForThisBinary" xml:space="preserve">
<value>Şu anda çalışan binary ile ilgili hiçbir öğe olmadığı için güncelleme işlemine devam edemedi! Lütfen ASF binary dosyanızın adının doğru olduğundan emin olun!</value>
<value>Şu anda çalışan binary ile ilgili hiçbir öğe olmadığı için güncelleme işlemine devam edemedi! Lütfen ASF binary dosyanızın adının uygun olduğundan emin olun!</value>
</data>
<data name="ErrorUpdateNoAssets" xml:space="preserve">
<value>Sürüm herhangi bir öğe içermediğinden güncelleme ile devam edemedi!</value>
</data>
<data name="ErrorUserInputRunningInHeadlessMode" xml:space="preserve">
<value>Kullanıcı giri için bir istek aldım, ancak süreç headless modda çalışıyor!</value>
<value>Kullanıcı girdisi için bir istek alındı; ancak işlem headless modda çalışıyor!</value>
</data>
<data name="ErrorWCFAccessDenied" xml:space="preserve">
<value>SteamOwnerID ayarlanmadığı için istek reddedildi!</value>
@@ -210,7 +210,7 @@ Hata bilgileri:
<value>Genel yapılandırma dosyası kaldırıldı!</value>
</data>
<data name="IgnoringTrade" xml:space="preserve">
<value>Takas Yoksayılıyor: {0}</value>
<value>Yoksayılan Takas: {0}</value>
<comment>{0} will be replaced by trade number</comment>
</data>
<data name="LoggingIn" xml:space="preserve">
@@ -218,31 +218,31 @@ Hata bilgileri:
<comment>{0} will be replaced by service's name</comment>
</data>
<data name="NoBotsAreRunning" xml:space="preserve">
<value>Hiçbir bot çalışmıyor, çıkılıyor...</value>
<value>Hiçbir bot çalışmıyor, çıkış yapılıyor...</value>
</data>
<data name="RefreshingOurSession" xml:space="preserve">
<value>Oturumunuz Yenileniyor!</value>
</data>
<data name="RejectingTrade" xml:space="preserve">
<value>Takas Reddedildi: {0}</value>
<value>Reddedilen Takas: {0}</value>
<comment>{0} will be replaced by trade number</comment>
</data>
<data name="Restarting" xml:space="preserve">
<value>Yeniden Başlatılıyor...</value>
</data>
<data name="WarningRuntimeUnsupported" xml:space="preserve">
<value>ASF desteklenmeyen runtime sürümü tespit etti, program mevcut ortamda doğru çalışmayabilir. Onu kendi sorumluluğunuzda, destek olmadan çalıştırıyorsunuz!</value>
<value>ASF desteklenmeyen runtime sürümü tespit etti, program mevcut ortamda doğru çalışmayabilir. Onu, kendi sorumluluğunuzda destek olmadan çalıştırıyorsunuz!</value>
</data>
<data name="RuntimeVersionComparison" xml:space="preserve">
<value>Gerekli sürüm: {0} | Bulunan sürüm: {1}</value>
<comment>{0} will be replaced by required version, {1} will be replaced by current version</comment>
</data>
<data name="RuntimeVersionOK" xml:space="preserve">
<value>{0} çalışma zamanı sürümü tamam.</value>
<value>{0} runtime sürümünüz UYGUN.</value>
<comment>{0} will be replaced by runtime name (e.g. "Mono")</comment>
</data>
<data name="WarningRuntimeVersionTooOld" xml:space="preserve">
<value>{0} runtime sürümün çok eski!</value>
<value>{0} runtime sürümünüz çok eski!</value>
<comment>{0} will be replaced by runtime name (e.g. "Mono")</comment>
</data>
<data name="Starting" xml:space="preserve">
@@ -290,7 +290,7 @@ Hata bilgileri:
<value>Yeni sürüm kontrol ediliyor...</value>
</data>
<data name="UpdateDownloadingNewVersion" xml:space="preserve">
<value>Yeni sürüm indiriliyor... Beklerken, yaptığımız çalışmayı takdir ediyorsanız bağış yapmayı düşün! :)</value>
<value>Yeni sürüm indiriliyor... Beklerken, yaptığımız çalışmayı takdir ediyorsanız bağış yapmayı düşünün! :)</value>
</data>
<data name="UpdateFinished" xml:space="preserve">
<value>Güncelleme işlemi tamamlandı!</value>
@@ -303,35 +303,35 @@ Hata bilgileri:
<comment>{0} will be replaced by current version, {1} will be replaced by remote version</comment>
</data>
<data name="UserInputDeviceID" xml:space="preserve">
<value>Lütfen mobil yetkilendirme cihaz kimliğini gir ("android:" dahil): </value>
<value>Lütfen mobil kimlik doğrulayıcısı DeviceID'sini girin ("android:" dahil): </value>
<comment>Please note that this translation should end with space</comment>
</data>
<data name="UserInputSteam2FA" xml:space="preserve">
<value>Lütfen Steam yetkilendirme uygulamasından 2-Adımlı-Doğrulama kodunu gir: </value>
<value>Lütfen Steam mobil uygulamanızdan İki Faktörlü Doğrulama kodunuzu girin: </value>
<comment>Please note that this translation should end with space</comment>
</data>
<data name="UserInputSteamGuard" xml:space="preserve">
<value>Lütfen e-postana gönderilen SteamGuard yetkilendirme kodunu gir: </value>
<value>Lütfen e-postanıza gönderilen SteamGuard kimlik doğrulayıcı kodunu girin: </value>
<comment>Please note that this translation should end with space</comment>
</data>
<data name="UserInputSteamLogin" xml:space="preserve">
<value>Lütfen Steam kullanıcı adını gir: </value>
<value>Lütfen Steam kullanıcı adınızı girin: </value>
<comment>Please note that this translation should end with space</comment>
</data>
<data name="UserInputSteamParentalPIN" xml:space="preserve">
<value>Lütfen Steam aile PIN'ini gir: </value>
<value>Lütfen Steam ebeveyn PIN'inizi giriniz: </value>
<comment>Please note that this translation should end with space</comment>
</data>
<data name="UserInputSteamPassword" xml:space="preserve">
<value>Lütfen Steam parolanı gir: </value>
<value>Lütfen Steam parolanızı girin: </value>
<comment>Please note that this translation should end with space</comment>
</data>
<data name="UserInputUnknown" xml:space="preserve">
<value>Lütfen belgelenmemiş {0} değerini gir: </value>
<value>Lütfen belgelenmemiş {0} değerini girin: </value>
<comment>{0} will be replaced by property name. Please note that this translation should end with space</comment>
</data>
<data name="UserInputWCFHost" xml:space="preserve">
<value>Lütfen WCF sunucusunu gir: </value>
<value>Lütfen WCF sunucunuzu girin: </value>
<comment>Please note that this translation should end with space</comment>
</data>
<data name="WarningUnknownValuePleaseReport" xml:space="preserve">
@@ -339,18 +339,18 @@ Hata bilgileri:
<comment>{0} will be replaced by object's name, {1} will be replaced by value for that object</comment>
</data>
<data name="WarningTooManyGamesToPlay" xml:space="preserve">
<value>Eşzamanlı olarak {0} oyundan fazla oynamak mümkün değildir, yalnızca {1} 'ten ilk {0} girdileri kullanılacaktır!</value>
<value>Eşzamanlı olarak {0} oyundan fazlasını oynamak mümkün değildir, yalnızca {1} yapılandırmasından ilk {0} girdisi kullanılacaktır!</value>
<comment>{0} will be replaced by max number of games, {1} will be replaced by name of the configuration property</comment>
</data>
<data name="WarningWCFIgnoringCommand" xml:space="preserve">
<value>--client belirtilmediği için WCF komutu yok sayılıyor: {0}</value>
<value>--İstemci belirtilmediği için WCF komutu yok sayılıyor: {0}</value>
<comment>{0} will be replaced by WCF command</comment>
</data>
<data name="ErrorWCFAddressAccessDeniedException" xml:space="preserve">
<value>WCF hizmeti AddressAccessDeniedException nedeniyle başlatılamadı! ASF tarafından sağlanan WCF hizmetini kullanmak istiyorsanız, ASF'yi yönetici olarak başlatmayı veya uygun izinler vermeyi düşünün!</value>
</data>
<data name="WCFAnswered" xml:space="preserve">
<value>WCF komutuna cevap: {0} ile: {1}</value>
<value>WCF komutuna cevap: {0} komutuyla ile: {1}</value>
<comment>{0} will be replaced by WCF command, {1} will be replaced by WCF answer</comment>
</data>
<data name="WCFReady" xml:space="preserve">
@@ -365,7 +365,7 @@ Hata bilgileri:
<comment>{0} will be replaced by WCF command, {1} will be replaced by WCF hostname</comment>
</data>
<data name="WCFStarting" xml:space="preserve">
<value>{0} 'da WCF sunucusu başlatılıyor...</value>
<value>{0} sunucusunda WCF sunucusu başlatılıyor...</value>
<comment>{0} will be replaced by WCF hostname</comment>
</data>
<data name="BotAlreadyStopped" xml:space="preserve">
@@ -380,7 +380,7 @@ Hata bilgileri:
<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">
<value>Bot oyunu çalıştırıyor: {0} ({1}, {2} kart kaldı). Toplam {3} oyun ({4} kart) var (kalan süre yaklaşık {5}).</value>
<value>Bot oyunu çalıştırıyor: {0} ({1}, {2} kart kaldı). Toplam {3} oyun ve ({4} kart) var (kalan süre yaklaşık {5}).</value>
<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 built from TimeSpan* translation parts</comment>
</data>
<data name="BotStatusIdlingList" xml:space="preserve">
@@ -412,7 +412,7 @@ Hata bilgileri:
<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 built from TimeSpan* translation parts</comment>
</data>
<data name="IdlingFinishedForGames" xml:space="preserve">
<value>Oyunları çalıştırma bitti: {0}</value>
<value>Tamamlanan oyunlar: {0}</value>
<comment>{0} will be replaced by list of the games (IDs, numbers), separated by a comma</comment>
</data>
<data name="IdlingStatusForGame" xml:space="preserve">
@@ -423,10 +423,10 @@ Hata bilgileri:
<value>Çalıştırma durdu!</value>
</data>
<data name="IgnoredStickyPauseEnabled" xml:space="preserve">
<value>İstek göz ardı edildi, "sticky pause" etkin!</value>
<value>Sticky pause etkin olduğundan bu talep göz ardı edildi!</value>
</data>
<data name="NothingToIdle" xml:space="preserve">
<value>Bu hesapta çalıştırılacak edilecek herhangi bir şey yok!</value>
<value>Bu hesapta çalıştırılacak hiçbir şey bulamadık!</value>
</data>
<data name="NowIdling" xml:space="preserve">
<value>Şimdi çalıştırılan: {0} ({1})</value>
@@ -437,7 +437,7 @@ Hata bilgileri:
<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>Oyun şu anda kullanılamıyor, daha sonra tekrar deneyelim!</value>
<value>Şu anda oyun çalıştırılamıyor, daha sonra tekrar deneyelim!</value>
</data>
<data name="StillIdling" xml:space="preserve">
<value>Hala çalıştırılan: {0} ({1})</value>
@@ -466,34 +466,34 @@ Hata bilgileri:
<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>Hediye kabul ediliyor: {0}...</value>
<value>Kabul edilen hediye: {0}...</value>
<comment>{0} will be replaced by giftID (number)</comment>
</data>
<data name="BotAccountLimited" xml:space="preserve">
<value>Bu hesap sınırlıdır, Çalıştırma işlemi, kısıtlama kaldırılıncaya kadar kalıcı olarak kullanılamaz!</value>
<value>Bu hesap sınırlıdır, Çalıştırma işlemi, kısıtlama kaldırılıncaya kadar kullanılamaz!</value>
</data>
<data name="BotAddLicense" xml:space="preserve">
<value>Kimlik: {0} | Durum: {1}</value>
<value>ID: {0} | Durum: {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>Kimlik: {0} | Durum: {1} | Öğeler: {2}</value>
<value>ID: {0} | Durum: {1} | Öğeler: {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>Bu bot zaten çalışıyor!</value>
</data>
<data name="BotAuthenticatorConverting" xml:space="preserve">
<value>.maFile ASF biçimine dönüştürüyor...</value>
<value>.maFile biçimi ASF biçimine dönüştürüyor...</value>
</data>
<data name="BotAuthenticatorImportFinished" xml:space="preserve">
<value>Mobil kimlik doğrulayıcısını almayı başarıyla tamamladı!</value>
<value>Mobil kimlik doğrulayıcısının aktarılması başarıyla tamamlandı!</value>
</data>
<data name="BotAuthenticatorInvalidDeviceID" xml:space="preserve">
<value>Cihaz kimliğiniz yanlış veya mevcut değil!</value>
<value>DeviceID'niz yanlış veya mevcut değil!</value>
</data>
<data name="BotAuthenticatorToken" xml:space="preserve">
<value>2AD Belirteci: {0}</value>
<value>2FD Kodu: {0}</value>
<comment>{0} will be replaced by generated 2FA token (string)</comment>
</data>
<data name="BotAutomaticIdlingNowPaused" xml:space="preserve">
@@ -510,7 +510,7 @@ Hata bilgileri:
<comment>{0} will be replaced by number of minutes</comment>
</data>
<data name="BotAutomaticIdlingResumedAlready" xml:space="preserve">
<value>Otomatik çalıştırma zaten devreye giriyor!</value>
<value>Otomatik çalıştırma zaten sürdürülüyor!</value>
</data>
<data name="BotConnected" xml:space="preserve">
<value>Steam'e bağlandı!</value>
@@ -529,7 +529,7 @@ Hata bilgileri:
<value>Bu bot örneğini yapılandırma dosyasında devre dışı bırakıldığından başlatamıyoruz!</value>
</data>
<data name="BotInvalidAuthenticatorDuringLogin" xml:space="preserve">
<value>İki Faktör Uyuşmazlığı hata kodunu bir satırda {0} defa alan, bu hemen hemen her zaman geçersiz ASF 2FA kimlik bilgilerini gösterir, iptal edildi!</value>
<value>TwoFactorCodeMismatch hata kodu üst üste {0} defa alındı, bu hemen hemen her zaman geçersiz ASF 2FD kimlik bilgilerini gösterir, iptal edildi!</value>
<comment>{0} will be replaced by maximum allowed number of failed 2FA attempts</comment>
</data>
<data name="BotLoggedOff" xml:space="preserve">
@@ -537,7 +537,7 @@ Hata bilgileri:
<comment>{0} will be replaced by logging off reason (string)</comment>
</data>
<data name="BotLoggedOn" xml:space="preserve">
<value>Başarıyla oturum açıldı!</value>
<value>Başarıyla giriş yapıldı!</value>
</data>
<data name="BotLoggingIn" xml:space="preserve">
<value>Giriş yapılıyor...</value>
@@ -548,36 +548,33 @@ Hata bilgileri:
<data name="BotLootingFailed" xml:space="preserve">
<value>Takas teklifi başarısız oldu!</value>
</data>
<data name="BotLootingMasterNotDefined" xml:space="preserve">
<value>SteamMasterID tanımlı olmadığı için Takas gönderilemedi!</value>
<comment>SteamMasterID is name of bot config property, it should not be translated</comment>
</data>
<data name="BotLootingNoLootableTypes" xml:space="preserve">
<value>Hiç yağmalanabilir tür setin yok!</value>
<value>Ayarlanan hiç düşürme türünüz yok!</value>
</data>
<data name="BotLootingNowDisabled" xml:space="preserve">
<value>Yağma şimdi devre dışı!</value>
<value>Düşürme şu anda devre dışı!</value>
</data>
<data name="BotLootingNowEnabled" xml:space="preserve">
<value>Yağma artık etkin!</value>
<value>Düşürme artık etkin!</value>
</data>
<data name="BotLootingSuccess" xml:space="preserve">
<value>Takas teklifi başarıyla gönderildi!</value>
</data>
<data name="BotLootingTemporarilyDisabled" xml:space="preserve">
<value>Yağma geçici olarak devre dışı!</value>
<value>Düşürme geçici olarak devre dışı!</value>
</data>
<data name="BotLootingYourself" xml:space="preserve">
<value>Kendini yağmalayamazsın!</value>
<value>Kendinizden düşüremezsiniz!</value>
</data>
<data name="BotNoASFAuthenticator" xml:space="preserve">
<value>Bu botta ASF 2-Adımlı-Doğrulama (2AD) etkin değil! Doğrulayıcınızı ASF 2AD olarak içe aktarmayı unuttunuz mu?</value>
<value>Bu botta ASF 2FD mevcut değil!! Doğrulayıcınızı ASF 2FD olarak içe aktarmayı unuttunuz mu?</value>
</data>
<data name="BotNotConnected" xml:space="preserve">
<value>Bu bot bağlı değil!</value>
</data>
<data name="BotNotOwnedYet" xml:space="preserve">
<value>Henüz sahibi değil: {0}</value>
<value>Henüz sahip olunmayan: {0}</value>
<comment>{0} will be replaced by query (string)</comment>
</data>
<data name="BotOwnedAlreadyWithName" xml:space="preserve">
@@ -585,7 +582,7 @@ Hata bilgileri:
<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>Hız sınırııldı, {0} dakika bekletildikten sonra yeniden deneyeceğiz...</value>
<value>Hız sınırııldı, {0} dakika bekledikten sonra yeniden deneyeceğiz...</value>
<comment>{0} will be replaced by number of minutes</comment>
</data>
<data name="BotReconnecting" xml:space="preserve">
@@ -608,14 +605,14 @@ Hata bilgileri:
<data name="BotStatusLimited" xml:space="preserve">
<value>Bot kısıtlı durumda ve çalışarak kart düşüremez.</value>
</data>
<data name="BotStatusNotConnected" xml:space="preserve">
<value>Bot bağlı değil.</value>
<data name="BotStatusConnecting" xml:space="preserve">
<value>Bot Steam ağına bağlanıyor.</value>
</data>
<data name="BotStatusNotRunning" xml:space="preserve">
<value>Bot çalışmıyor.</value>
</data>
<data name="BotStatusPaused" xml:space="preserve">
<value>Bot duraklatılmış veya el modunda çalışıyor.</value>
<value>Bot duraklatılmış veya manuel çalışıyor.</value>
</data>
<data name="BotStatusPlayingNotAvailable" xml:space="preserve">
<value>Bot şu anda kullanılıyor.</value>
@@ -633,11 +630,11 @@ Hata bilgileri:
<comment>{0} will be replaced by object's name</comment>
</data>
<data name="UnusedKeys" xml:space="preserve">
<value>Kullanılmayan Keyler: {0}</value>
<value>Kullanılmayan anahtarlar: {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>Hata yüzünden başarısız: {0}</value>
<value>Şu hata yüzünden başarısız: {0}</value>
<comment>{0} will be replaced by failure reason (string)</comment>
</data>
<data name="BotConnectionLost" xml:space="preserve">
@@ -647,13 +644,13 @@ Hata bilgileri:
<value>Hesap artık meşgul değil, çalıştırılmaya devam ediliyor!</value>
</data>
<data name="BotAccountOccupied" xml:space="preserve">
<value>Hesap şu anda kullanılıyor, ASF serbest kaldığında çalışmaya devam edecek...</value>
<value>Hesap şu anda kullanılıyor, ASF, hesap kullanılmadığında çalışmaya devam edecektir...</value>
</data>
<data name="BotAutomaticIdlingPauseTimeout" xml:space="preserve">
<value>Paylaşılan kütüphane belirli bir süre içinde başlatılmadı, çalıştırma süreci devam devam ediyor!</value>
</data>
<data name="BotConnecting" xml:space="preserve">
<value>Bağlanıyor...</value>
<value>Bağlanılıyor...</value>
</data>
<data name="BotHeartBeatFailed" xml:space="preserve">
<value>İstemcinin bağlantısını kesmek başarısız oldu. Bu bot örneği terk ediliyor!</value>
@@ -669,7 +666,7 @@ Hata bilgileri:
<comment>{0} will be replaced by file's path</comment>
</data>
<data name="ErrorDatabaseInvalid" xml:space="preserve">
<value>Kalıcı veritabanı yüklenemedi, sorun devam ederse, lütfen veritabanını yeniden oluşturmak için {0} 'yi kaldırın!</value>
<value>Kalıcı veritabanı yüklenemedi, sorun devam ederse, lütfen veri tabanını yeniden oluşturmak için {0} kısmını kaldırın!</value>
<comment>{0} will be replaced by file's path</comment>
</data>
<data name="Initializing" xml:space="preserve">
@@ -686,11 +683,11 @@ Hata bilgileri:
<value>Sağlanan CurrentCulture geçersiz, ASF varsayılan ile çalışmaya devam edecek!</value>
</data>
<data name="TranslationIncomplete" xml:space="preserve">
<value>ASF tercih ettiğiniz {0} kültürünü kullanmaya çalışacak, ancak o dildeki çeviri yalnızca {1} içinde tamamlandı. Diliniz için ASF çevirisini geliştirmemize belki de yardımcı olabilir misiniz?</value>
<value>ASF tercih ettiğiniz {0} kültürünü kullanmaya çalışacak, ancak o dildeki çeviri yalnızca {1} oranında tamamlandı. Diliniz için ASF çevirisini geliştirmemize belki de yardımcı olabilirsiniz?</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>ASF oyunu şu anda oynanamadığından, {0} ({1}) düşürmesi geçici olarak devre dışı.</value>
<value>ASF oyunu şu anda oynayamadığından, {0} ({1}) düşürmesi geçici olarak devre dışı.</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">
@@ -708,10 +705,11 @@ Hata bilgileri:
<value>Bot kilitli durumda ve çalışarak kart düşüremez.</value>
</data>
<data name="ErrorFunctionOnlyInHeadlessMode" xml:space="preserve">
<value>Bu işlev yalnızca komutasız modda kullanılabilir!</value>
<value>Bu işlev yalnızca headless modda kullanılabilir!</value>
</data>
<data name="BotOwnedAlready" xml:space="preserve">
<value>Zaten sahip olunan: {0}</value>
<comment>{0} will be replaced by game's ID (number), {1} will be replaced by game's name</comment>
</data>
</root>

View File

@@ -118,7 +118,7 @@
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="AcceptingTrade" xml:space="preserve">
<value>Ухвалення обміну: {0}</value>
<value>Прийняття обміну: {0}</value>
<comment>{0} will be replaced by trade number</comment>
</data>
<data name="AutoUpdateCheckInfo" xml:space="preserve">
@@ -126,12 +126,12 @@
<comment>{0} will be replaced by number of hours</comment>
</data>
<data name="Content" xml:space="preserve">
<value>Зміст:
<value>Вміст:
{0}</value>
<comment>{0} will be replaced by content string. Please note that this string should include newline for formatting.</comment>
</data>
<data name="ErrorConfigPropertyInvalid" xml:space="preserve">
<value>Конфігураційний параметр {0} є невірним: {1}</value>
<value>Параметр {0} має невірне значення: {1}</value>
<comment>{0} will be replaced by name of the configuration property, {1} will be replaced by invalid value</comment>
</data>
<data name="ErrorEarlyFatalExceptionInfo" xml:space="preserve">
@@ -170,7 +170,7 @@
<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="ErrorRemovingOldBinary" xml:space="preserve">
@@ -182,7 +182,7 @@
<comment>{0} will be replaced by maximum number of tries</comment>
</data>
<data name="ErrorUpdateCheckFailed" xml:space="preserve">
<value>Не вдалося перевірити наявність останньої версії!</value>
<value>Не вдалося перевірити наявність нової версії!</value>
</data>
<data name="ErrorUpdateNoAssetForThisBinary" xml:space="preserve">
<value>Не можна оновитися, оскільки немає ніяких файлів, що належать до запущеного процессу! Будь ласка переконайтеся, що ваш виконуваний файл ASF має вірне ім'я!</value>
@@ -201,20 +201,20 @@
<value>Вихід...</value>
</data>
<data name="WarningFailed" xml:space="preserve">
<value>Помилка!</value>
<value>Не вдалося!</value>
</data>
<data name="GlobalConfigChanged" xml:space="preserve">
<value>Глобальна конфігурація змінена!</value>
</data>
<data name="ErrorGlobalConfigRemoved" xml:space="preserve">
<value>Файл загальних параметрів був видалений!</value>
<value>Глобальна конфігурація видалена!</value>
</data>
<data name="IgnoringTrade" xml:space="preserve">
<value>Ігнорування обміну: {0}</value>
<comment>{0} will be replaced by trade number</comment>
</data>
<data name="LoggingIn" xml:space="preserve">
<value>Вхід в {0}...</value>
<value>Вхід до {0}...</value>
<comment>{0} will be replaced by service's name</comment>
</data>
<data name="NoBotsAreRunning" xml:space="preserve">
@@ -242,7 +242,7 @@
<comment>{0} will be replaced by runtime name (e.g. "Mono")</comment>
</data>
<data name="WarningRuntimeVersionTooOld" xml:space="preserve">
<value>Ваша версія програми {0} - застаріла!</value>
<value>Версія вашого середовища виконання {0} надто стара!</value>
<comment>{0} will be replaced by runtime name (e.g. "Mono")</comment>
</data>
<data name="Starting" xml:space="preserve">
@@ -253,7 +253,7 @@
<comment>{0} will be replaced by status code number/name</comment>
</data>
<data name="Success" xml:space="preserve">
<value>Виконано!</value>
<value>Успіх!</value>
</data>
<data name="TimeSpanDay" xml:space="preserve">
<value>1 день</value>
@@ -296,7 +296,7 @@
<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>
@@ -339,7 +339,7 @@
<comment>{0} will be replaced by object's name, {1} will be replaced by value for that object</comment>
</data>
<data name="WarningTooManyGamesToPlay" xml:space="preserve">
<value>Запуск більше ніж {0} ігор одночасно - неможливо, лише перші {0} з {1} будуть задіяні!</value>
<value>Запуск більше ніж {0} ігор одночасно - неможливий, лише перші {0} з {1} будуть задіяні!</value>
<comment>{0} will be replaced by max number of games, {1} will be replaced by name of the configuration property</comment>
</data>
<data name="WarningWCFIgnoringCommand" xml:space="preserve">
@@ -423,10 +423,10 @@
<value>Роботу зупинено!</value>
</data>
<data name="IgnoredStickyPauseEnabled" 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>
@@ -448,11 +448,11 @@
<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>Зупинeння обробки: {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">
@@ -466,18 +466,18 @@
<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>
<value>Цей акаунт обмежений, робота буде недоступна доки ви не позбудетесь обмежень!</value>
</data>
<data name="BotAddLicense" xml:space="preserve">
<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">
@@ -513,10 +513,10 @@
<value>Автоматичну роботу вже відновлено!</value>
</data>
<data name="BotConnected" xml:space="preserve">
<value>Підключення до Steam!</value>
<value>Підключено до Steam!</value>
</data>
<data name="BotDisconnected" xml:space="preserve">
<value>Відключення від Steam!</value>
<value>Відключено від Steam!</value>
</data>
<data name="BotDisconnecting" xml:space="preserve">
<value>Відключення...</value>
@@ -533,7 +533,7 @@
<comment>{0} will be replaced by maximum allowed number of failed 2FA attempts</comment>
</data>
<data name="BotLoggedOff" xml:space="preserve">
<value>Вихід з Steam: {0}</value>
<value>Вийшов зі Steam: {0}</value>
<comment>{0} will be replaced by logging off reason (string)</comment>
</data>
<data name="BotLoggedOn" xml:space="preserve">
@@ -543,14 +543,13 @@
<value>Здійснюється вхід...</value>
</data>
<data name="BotLogonSessionReplaced" xml:space="preserve">
<value>Ймовірно, цей аккаунт зараз використовується в іншому екземплярі ASF, це є позаштатною ситуацією, припиняему роботу!</value>
<value>Ймовірно, цей акаунт зараз використовується в іншому екземплярі ASF, це є позаштатною ситуацією, припиняемо роботу!</value>
</data>
<data name="BotLootingFailed" xml:space="preserve">
<value>Невдала спроба обміну!</value>
</data>
<data name="BotLootingMasterNotDefined" xml:space="preserve">
<value>Неможливо надіслати обмін, бо не задано SteamMasterID!</value>
<comment>SteamMasterID is name of bot config property, it should not be translated</comment>
<value>Неможливо надіслати обмін, бо нe задано користувача з правами "master"!</value>
</data>
<data name="BotLootingNoLootableTypes" xml:space="preserve">
<value>У вас не виставлені будь-які типи предметів для збору!</value>
@@ -562,7 +561,7 @@
<value>Збір предметів зараз включений!</value>
</data>
<data name="BotLootingSuccess" xml:space="preserve">
<value>Обмін надісланий!</value>
<value>Обмін успішно надіслано!</value>
</data>
<data name="BotLootingTemporarilyDisabled" xml:space="preserve">
<value>Збір предметів тимчасово відключений!</value>
@@ -596,7 +595,7 @@
<comment>{0} will be replaced by cd-key (string), {1} will be replaced by status string</comment>
</data>
<data name="BotRedeemWithItems" xml:space="preserve">
<value>Ключ: {0} | Стан: {1} | Отримано: {2}</value>
<value>Ключ: {0} | Стан: {1} | Продукти: {2}</value>
<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">
@@ -608,8 +607,8 @@
<data name="BotStatusLimited" xml:space="preserve">
<value>Бот обмежений і не може отримувати карти.</value>
</data>
<data name="BotStatusNotConnected" xml:space="preserve">
<value>Бот не підключений.</value>
<data name="BotStatusConnecting" xml:space="preserve">
<value>Бот підключається до мережі Steam.</value>
</data>
<data name="BotStatusNotRunning" xml:space="preserve">
<value>Бот не запущений.</value>
@@ -621,7 +620,7 @@
<value>Бот зараз використовується.</value>
</data>
<data name="BotUnableToConnect" xml:space="preserve">
<value>Неможливо з'єднатися з Steam: {0}</value>
<value>Неможливо з'єднатися зі Steam: {0}</value>
<comment>{0} will be replaced by failure reason (string)</comment>
</data>
<data name="BotUnableToLogin" xml:space="preserve">
@@ -644,10 +643,10 @@
<value>Підключення до мережі Steam втрачено. Підключаемось повторно...</value>
</data>
<data name="BotAccountFree" xml:space="preserve">
<value>Аккаунт більше не зайнятий: роботу відновлено!</value>
<value>Акаунт більше не зайнятий: роботу відновлено!</value>
</data>
<data name="BotAccountOccupied" xml:space="preserve">
<value>Акаунт зараз використовується: ASF продовжить коли аккаунт звільниться...</value>
<value>Акаунт зараз використовується: ASF продовжить коли він звільниться...</value>
</data>
<data name="BotAutomaticIdlingPauseTimeout" xml:space="preserve">
<value>Сімейна бібліотека не була запущена у відведений період часу. Роботу відновлено!</value>
@@ -662,7 +661,7 @@
<value>Не вдалося ініціалізувати SteamDirectory: підключення до мережі Steam може тривати довше, ніж зазвичай!</value>
</data>
<data name="BotStopping" xml:space="preserve">
<value>Зупинка...</value>
<value>Зупинення...</value>
</data>
<data name="ErrorBotConfigInvalid" xml:space="preserve">
<value>Конфігурація вашого боту невірна. Будь ласка, перевірте вміст {0}, та спробуйте ще!</value>
@@ -686,7 +685,7 @@
<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">
@@ -714,4 +713,7 @@
<value>Вже має: {0}</value>
<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>
</data>
</root>

View File

@@ -149,7 +149,10 @@ StackTrace:
<value>Yêu cầu thất bại: {0}</value>
<comment>{0} will be replaced by URL of the request</comment>
</data>
<data name="ErrorGlobalConfigNotLoaded" xml:space="preserve">
<value>Cấu hình chung không thể nạp. Hãy chắc chắn rằng {0} tồn tại và hợp lệ! Làm theo hướng dẫn 'thiết lập' trên wiki nếu bạn nhầm lẫn.</value>
<comment>{0} will be replaced by file's path</comment>
</data>
<data name="ErrorIsInvalid" xml:space="preserve">
<value>{0} không hợp lệ!</value>
<comment>{0} will be replaced by object's name</comment>
@@ -157,7 +160,9 @@ StackTrace:
<data name="ErrorMobileAuthenticatorInvalidDeviceID" xml:space="preserve">
<value>Từ chối thực hiện chức năng này do DeviceID không hợp lệ trong ASF 2FA!</value>
</data>
<data name="ErrorNoBotsDefined" xml:space="preserve">
<value>Không có bot nào được xác định. Bạn quên thiết lập cấu hình ASF của bạn?</value>
</data>
<data name="ErrorObjectIsNull" xml:space="preserve">
<value>{0} vô hiệu!</value>
<comment>{0} will be replaced by object's name</comment>
@@ -166,8 +171,14 @@ StackTrace:
<value>Phân tách ngữ pháp {0} không thành công!</value>
<comment>{0} will be replaced by object's name</comment>
</data>
<data name="ErrorRemovingOldBinary" xml:space="preserve">
<value>Không thể xóa tập tin ASF cũ, vui lòng xóa thủ công {0} để chạy chức năng cập nhật!</value>
<comment>{0} will be replaced by file's path</comment>
</data>
<data name="ErrorRequestFailedTooManyTimes" xml:space="preserve">
<value>Yêu cầu thất bại sau {0} nỗ lực!</value>
<comment>{0} will be replaced by maximum number of tries</comment>
</data>
<data name="ErrorUpdateCheckFailed" xml:space="preserve">
<value>Không thể kiểm tra phiên bản mới nhất!</value>
</data>
@@ -289,14 +300,38 @@ StackTrace:
<value>Phiên bản cục bộ: {0} | Phiên bản từ xa: {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>Xin vui lòng nhập Device ID (bao gồm cả "android:"): </value>
<comment>Please note that this translation should end with space</comment>
</data>
<data name="UserInputSteam2FA" xml:space="preserve">
<value>Xin vui lòng nhập mã 2FA từ ứng dụng Steam Authenticator của bạn: </value>
<comment>Please note that this translation should end with space</comment>
</data>
<data name="UserInputSteamGuard" xml:space="preserve">
<value>Xin vui lòng nhập mã số SteamGuard đã được gửi vào email của bạn: </value>
<comment>Please note that this translation should end with space</comment>
</data>
<data name="UserInputSteamLogin" xml:space="preserve">
<value>Xin vui lòng nhập tài khoản Steam của bạn: </value>
<comment>Please note that this translation should end with space</comment>
</data>
<data name="UserInputSteamParentalPIN" xml:space="preserve">
<value>Xin vui lòng nhập mã PIN của Steam Parental: </value>
<comment>Please note that this translation should end with space</comment>
</data>
<data name="UserInputSteamPassword" xml:space="preserve">
<value>Xin vui lòng nhập mật khẩu Steam của bạn: </value>
<comment>Please note that this translation should end with space</comment>
</data>
<data name="UserInputUnknown" xml:space="preserve">
<value>Xin vui lòng nhập các giá trị không có giấy tờ của {0}: </value>
<comment>{0} will be replaced by property name. Please note that this translation should end with space</comment>
</data>
<data name="UserInputWCFHost" xml:space="preserve">
<value>Xin vui lòng nhập máy chủ WCF của bạn: </value>
<comment>Please note that this translation should end with space</comment>
</data>
<data name="WarningUnknownValuePleaseReport" xml:space="preserve">
<value>Nhận được giá trị không rõ cho {0}, xin vui lòng báo cáo điều này: {1}</value>
<comment>{0} will be replaced by object's name, {1} will be replaced by value for that object</comment>
@@ -331,12 +366,17 @@ StackTrace:
<value>Bắt đầu máy chủ WCF trên {0}...</value>
<comment>{0} will be replaced by WCF hostname</comment>
</data>
<data name="BotAlreadyStopped" xml:space="preserve">
<value>Bot này đã được dừng lại!</value>
</data>
<data name="BotNotFound" xml:space="preserve">
<value>Không thể tìm thấy bất kỳ bot tên {0}!</value>
<comment>{0} will be replaced by bot's name query (string)</comment>
</data>
<data name="BotStatusOverview" xml:space="preserve">
<value>Đang có {0}/{1} bot đang chạy, với tổng số {2} games ({3} cards) còn lại để chạy không.</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="CheckingFirstBadgePage" xml:space="preserve">
@@ -410,7 +450,9 @@ StackTrace:
<data name="UnknownCommand" xml:space="preserve">
<value>Không rõ lệnh!</value>
</data>
<data name="WarningCouldNotCheckBadges" xml:space="preserve">
<value>Không lấy được thông tin huy hiệu, chúng tôi sẽ thử lại sau!</value>
</data>
<data name="WarningCouldNotCheckCardsStatus" xml:space="preserve">
<value>Không thể kiểm tra trạng thái thẻ: {0} ({1}), chúng tôi sẽ thử lại sau!</value>
<comment>{0} will be replaced by game's ID (number), {1} will be replaced by game's name</comment>
@@ -419,10 +461,14 @@ StackTrace:
<value>Chấp nhận quà tặng: {0}...</value>
<comment>{0} will be replaced by giftID (number)</comment>
</data>
<data name="BotAccountLimited" xml:space="preserve">
<value>Tài khoản này bị giới hạn, quá trình chạy không sẽ không khả dụng cho đến khi những hạn chế sẽ bị gỡ bỏ!</value>
</data>
<data name="BotAlreadyRunning" xml:space="preserve">
<value>Bot này đang được chạy!</value>
</data>
<data name="BotAuthenticatorConverting" xml:space="preserve">
<value>Chuyển đổi .maFile thành định dạng ASF...</value>
</data>
@@ -484,10 +530,7 @@ StackTrace:
<data name="BotLootingFailed" xml:space="preserve">
<value>Lời mời giao dịch thất bại!</value>
</data>
<data name="BotLootingMasterNotDefined" xml:space="preserve">
<value>Lời mời giao dịch không thể gửi vì SteamMasterID không xác định!</value>
<comment>SteamMasterID is name of bot config property, it should not be translated</comment>
</data>
<data name="BotLootingNoLootableTypes" xml:space="preserve">
<value>Bạn không có bất kỳ cái gì có thể luộc được!</value>
</data>
@@ -506,13 +549,21 @@ StackTrace:
<data name="BotLootingYourself" xml:space="preserve">
<value>Bạn không thể luộc đồ chính mình!</value>
</data>
<data name="BotNoASFAuthenticator" xml:space="preserve">
<value>Bot này không có ASF 2FA kích hoạt! Bạn quên nhập xác thực của bạn là ASF 2FA?</value>
</data>
<data name="BotNotConnected" xml:space="preserve">
<value>Bot này không được kết nối!</value>
</data>
<data name="BotOwnedAlreadyWithName" xml:space="preserve">
<value>Đã sở hữu: {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="BotRateLimitExceeded" xml:space="preserve">
<value>Vượt quá số lượng giới hạn: chúng tôi sẽ thử lại sau {0} phút...</value>
<comment>{0} will be replaced by number of minutes</comment>
</data>
<data name="BotReconnecting" xml:space="preserve">
<value>Đang kết nối lại...</value>
</data>
@@ -521,13 +572,13 @@ StackTrace:
<data name="BotRemovedExpiredLoginKey" xml:space="preserve">
<value>Gỡ bỏ key đăng nhập hết hạn!</value>
</data>
<data name="BotStatusNotIdling" xml:space="preserve">
<value>Bot không đang chạy không bất cứ điều gì.</value>
</data>
<data name="BotStatusLimited" xml:space="preserve">
<value>Bot bị hạn chế và không thể rớt bất kỳ thẻ thông qua chạy không.</value>
</data>
<data name="BotStatusNotConnected" xml:space="preserve">
<value>Bot không kết nối.</value>
</data>
<data name="BotStatusNotRunning" xml:space="preserve">
<value>Bot không chạy.</value>
</data>
@@ -557,19 +608,34 @@ StackTrace:
<value>Thất bại do lỗi: {0}</value>
<comment>{0} will be replaced by failure reason (string)</comment>
</data>
<data name="BotConnectionLost" xml:space="preserve">
<value>Mất kết nối đến mạng Steam. Đang kết nối lại...</value>
</data>
<data name="BotAccountFree" xml:space="preserve">
<value>Tài khoản không còn bị chiếm đóng: quá trình chạy không tiếp tục trở lại!</value>
</data>
<data name="BotAccountOccupied" xml:space="preserve">
<value>Tài khoản hiện tại đang được sử dụng: ASF sẽ tiếp tục chạy không khi nó tự do...</value>
</data>
<data name="BotAutomaticIdlingPauseTimeout" xml:space="preserve">
<value>Thư viện chia sẻ không được chạy trong khoảng thời gian đưa ra. Quá trình chạy không tiếp tục!</value>
</data>
<data name="BotConnecting" xml:space="preserve">
<value>Đang kết nối...</value>
</data>
<data name="BotHeartBeatFailed" xml:space="preserve">
<value>Thất bại ngắt kết nối khách hàng. Từ bỏ con bot này!</value>
</data>
<data name="BotSteamDirectoryInitializationFailed" xml:space="preserve">
<value>Không thể khởi tạo SteamDirectory: kết nối với mạng Steam có thể lâu hơn so với bình thường!</value>
</data>
<data name="BotStopping" xml:space="preserve">
<value>Đang dừng...</value>
</data>
<data name="ErrorBotConfigInvalid" xml:space="preserve">
<value>Cấu hình bot của bạn không hợp lệ. Vui lòng xác minh nội dung của {0} và thử lại lần nữa!</value>
<comment>{0} will be replaced by file's path</comment>
</data>
<data name="ErrorDatabaseInvalid" xml:space="preserve">
<value>Cơ sở dữ liệu liên tục không được nạp, nếu vấn đề vẫn còn, hãy loại bỏ {0} để tạo lại cơ sở dữ liệu!</value>
<comment>{0} will be replaced by file's path</comment>
@@ -584,19 +650,30 @@ StackTrace:
<data name="Welcome" xml:space="preserve">
<value>Có vẻ như đây là lần đầu tiên khởi động chương trình của bạn, chào mừng!</value>
</data>
<data name="ErrorInvalidCurrentCulture" xml:space="preserve">
<value>CurrentCulture bạn cung cấp không hợp lệ, ASF sẽ tiếp tục chạy với thiết lập mặc định!</value>
</data>
<data name="TranslationIncomplete" xml:space="preserve">
<value>ASF sẽ cố gắng sử dụng mã ngôn ngữ {0} ưa thích của bạn, nhưng bản dịch ngôn ngữ đó hoàn thiện chỉ được {1}. Có lẽ bạn có thể giúp chúng tôi cải thiện bản dịch ASF cho ngôn ngữ của bạn?</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="WarningIdlingGameMismatch" xml:space="preserve">
<value>ASF phát hiện ID không khớp với {0} ({1}) và sẽ sử dụng ID {2} thay thế.</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">
<value>{0} V{1}</value>
<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="BotStatusLocked" xml:space="preserve">
<value>Bot bị khóa và không thể rớt bất kỳ thẻ thông qua chạy không.</value>
</data>
<data name="BotOwnedAlready" xml:space="preserve">
<value>Đã sở hữu: {0}</value>
<comment>{0} will be replaced by game's ID (number), {1} will be replaced by game's name</comment>
</data>
</root>

View File

@@ -545,10 +545,7 @@
<data name="BotLootingFailed" xml:space="preserve">
<value>交易报价失败!</value>
</data>
<data name="BotLootingMasterNotDefined" xml:space="preserve">
<value>未定义SteamMasterID无法发送交易</value>
<comment>SteamMasterID is name of bot config property, it should not be translated</comment>
</data>
<data name="BotLootingNoLootableTypes" xml:space="preserve">
<value>你没有设置任何拾取类型!</value>
</data>
@@ -605,8 +602,8 @@
<data name="BotStatusLimited" xml:space="preserve">
<value>帐号是受限制的,不会掉落任何卡牌。</value>
</data>
<data name="BotStatusNotConnected" xml:space="preserve">
<value>帐号未连接。</value>
<data name="BotStatusConnecting" xml:space="preserve">
<value>账号正在连接到Steam网络。</value>
</data>
<data name="BotStatusNotRunning" xml:space="preserve">
<value>帐号没有在运行。</value>
@@ -711,4 +708,7 @@
<value>已经拥有︰ {0}</value>
<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>
</data>
</root>

View File

@@ -141,12 +141,17 @@
<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>正在退出並伴隨著非零的shell錯誤代碼</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>
<comment>{0} will be replaced by file's path</comment>
</data>
<data name="ErrorIsInvalid" xml:space="preserve">
<value>{0} 無效 </value>
<comment>{0} will be replaced by object's name</comment>
@@ -165,8 +170,14 @@
<value>分析 {0} 失敗 </value>
<comment>{0} will be replaced by object's name</comment>
</data>
<data name="ErrorRemovingOldBinary" xml:space="preserve">
<value>無法刪除舊的 ASF 檔案,請依序手動刪除 {0} ,使更新功能正常運作!</value>
<comment>{0} will be replaced by file's path</comment>
</data>
<data name="ErrorRequestFailedTooManyTimes" xml:space="preserve">
<value>嘗試請求 {0} 次後失敗!</value>
<comment>{0} will be replaced by maximum number of tries</comment>
</data>
<data name="ErrorUpdateCheckFailed" xml:space="preserve">
<value>無法檢查最新版本!</value>
</data>
@@ -300,7 +311,10 @@
<value>請輸入寄送至您 E-mail 的 Steam Guard 代碼: </value>
<comment>Please note that this translation should end with space</comment>
</data>
<data name="UserInputSteamLogin" xml:space="preserve">
<value>請輸入您的Steam帳號: </value>
<comment>Please note that this translation should end with space</comment>
</data>
<data name="UserInputSteamParentalPIN" xml:space="preserve">
<value>請輸入 Steam 家庭監護 PIN 碼: </value>
<comment>Please note that this translation should end with space</comment>
@@ -309,7 +323,10 @@
<value>請輸入您的 Steam 密碼: </value>
<comment>Please note that this translation should end with space</comment>
</data>
<data name="UserInputUnknown" xml:space="preserve">
<value>請輸入未記錄的值 {0}: </value>
<comment>{0} will be replaced by property name. Please note that this translation should end with space</comment>
</data>
<data name="UserInputWCFHost" xml:space="preserve">
<value>請輸入您的 WCF 主機: </value>
<comment>Please note that this translation should end with space</comment>
@@ -528,10 +545,7 @@
<data name="BotLootingFailed" xml:space="preserve">
<value>交易提案已失敗!</value>
</data>
<data name="BotLootingMasterNotDefined" xml:space="preserve">
<value>沒有設定 SteamMasterID ,交易提案無法發送!</value>
<comment>SteamMasterID is name of bot config property, it should not be translated</comment>
</data>
<data name="BotLootingNoLootableTypes" xml:space="preserve">
<value>並未設定任何可獲取的物品類型!</value>
</data>
@@ -588,9 +602,7 @@
<data name="BotStatusLimited" xml:space="preserve">
<value>BOT 的帳號是受限制的,所以無法通過掛卡得到卡片。</value>
</data>
<data name="BotStatusNotConnected" xml:space="preserve">
<value>BOT 未連線。</value>
</data>
<data name="BotStatusNotRunning" xml:space="preserve">
<value>BOT 未運行。</value>
</data>
@@ -673,7 +685,10 @@
<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>
<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">
<value>{0} V{1}</value>
<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>
@@ -684,9 +699,12 @@
<data name="BotStatusLocked" xml:space="preserve">
<value>BOT 的帳號已被鎖定,無法透過掛卡得到卡片。</value>
</data>
<data name="ErrorFunctionOnlyInHeadlessMode" xml:space="preserve">
<value>此功能僅能在無標頭模式下使用!</value>
</data>
<data name="BotOwnedAlready" xml:space="preserve">
<value>已擁有: {0}</value>
<comment>{0} will be replaced by game's ID (number), {1} will be replaced by game's name</comment>
</data>
</root>

View File

@@ -183,7 +183,7 @@ namespace ArchiSteamFarm {
string description = descriptionNode.InnerText;
if (description.StartsWith("Sell - ", StringComparison.Ordinal)) {
type = Steam.ConfirmationDetails.EType.Market;
} else if (description.StartsWith("Trade with ", StringComparison.Ordinal)) {
} else if (description.StartsWith("Trade with ", StringComparison.Ordinal) || description.Equals("Error loading trade details")) {
type = Steam.ConfirmationDetails.EType.Trade;
} else {
Bot.ArchiLogger.LogGenericWarning(string.Format(Strings.WarningUnknownValuePleaseReport, nameof(description), description));
@@ -366,7 +366,7 @@ namespace ArchiSteamFarm {
return (uint) (Utilities.GetUnixTime() + SteamTimeDifference.Value);
}
uint serverTime = Bot.ArchiWebHandler.GetServerTime();
uint serverTime = await Bot.ArchiWebHandler.GetServerTime().ConfigureAwait(false);
if (serverTime == 0) {
return Utilities.GetUnixTime();
}

View File

@@ -31,19 +31,41 @@ namespace ArchiSteamFarm {
internal static class OS {
private static readonly PlatformID PlatformID = Environment.OSVersion.Platform;
internal static void Init() {
internal static void Init(bool headless) {
switch (PlatformID) {
case PlatformID.Win32NT:
case PlatformID.Win32S:
case PlatformID.Win32Windows:
case PlatformID.WinCE:
KeepWindowsSystemActive();
DisableQuickEditMode();
if (headless) {
KeepWindowsSystemActive();
}
break;
}
SystemEvents.TimeChanged += OnTimeChanged;
}
private static void DisableQuickEditMode() {
// http://stackoverflow.com/questions/30418886/how-and-why-does-quickedit-mode-in-command-prompt-freeze-applications
IntPtr consoleHandle = NativeMethods.GetStdHandle(NativeMethods.StandardInputHandle);
uint consoleMode;
if (!NativeMethods.GetConsoleMode(consoleHandle, out consoleMode)) {
ASF.ArchiLogger.LogGenericError(Strings.WarningFailed);
return;
}
consoleMode &= ~NativeMethods.EnableQuickEditMode;
if (!NativeMethods.SetConsoleMode(consoleHandle, consoleMode)) {
ASF.ArchiLogger.LogGenericError(Strings.WarningFailed);
}
}
private static void KeepWindowsSystemActive() {
// This function calls unmanaged API in order to tell Windows OS that it should not enter sleep state while the program is running
// If user wishes to enter sleep mode, then he should use ShutdownOnFarmingFinished or manage ASF process with third-party tool or script
@@ -59,6 +81,18 @@ namespace ArchiSteamFarm {
private static async void OnTimeChanged(object sender, EventArgs e) => await MobileAuthenticator.OnTimeChanged().ConfigureAwait(false);
private static class NativeMethods {
internal const uint EnableQuickEditMode = 0x0040;
internal const int StandardInputHandle = -10;
[DllImport("kernel32.dll", CharSet = CharSet.Auto)]
internal static extern bool GetConsoleMode(IntPtr hConsoleHandle, out uint lpMode);
[DllImport("kernel32.dll", CharSet = CharSet.Auto)]
internal static extern IntPtr GetStdHandle(int nStdHandle);
[DllImport("kernel32.dll", CharSet = CharSet.Auto)]
internal static extern bool SetConsoleMode(IntPtr hConsoleHandle, uint dwMode);
[DllImport("kernel32.dll", CharSet = CharSet.Auto)]
internal static extern EExecutionState SetThreadExecutionState(EExecutionState executionState);

View File

@@ -23,6 +23,7 @@
*/
using System;
using System.Collections;
using System.Collections.Generic;
using System.Diagnostics;
using System.Globalization;
@@ -235,36 +236,45 @@ namespace ArchiSteamFarm {
}
}
ushort defaultResourceSetCount = 0;
ResourceSet defaultResourceSet = Strings.ResourceManager.GetResourceSet(CultureInfo.GetCultureInfo("en-US"), true, true);
if (defaultResourceSet != null) {
defaultResourceSetCount = (ushort) defaultResourceSet.Cast<object>().Count();
}
if (defaultResourceSetCount == 0) {
if (CultureInfo.CurrentCulture.TwoLetterISOLanguageName.Equals("en")) {
return;
}
ushort currentResourceSetCount = 0;
ResourceSet currentResourceSet = Strings.ResourceManager.GetResourceSet(CultureInfo.CurrentCulture, true, false);
if (currentResourceSet != null) {
currentResourceSetCount = (ushort) currentResourceSet.Cast<object>().Count();
ResourceSet defaultResourceSet = Strings.ResourceManager.GetResourceSet(CultureInfo.GetCultureInfo("en-US"), true, true);
if (defaultResourceSet == null) {
ASF.ArchiLogger.LogNullError(nameof(defaultResourceSet));
return;
}
if (currentResourceSetCount < defaultResourceSetCount) {
// We don't want to report "en-AU" as 0.00% only because we don't have it as a dialect, if "en" is available and translated
// This typically will work only for English, as e.g. "nl-BE" doesn't fallback to "nl-NL", but "nl", and "nl" will be empty
ushort neutralResourceSetCount = 0;
ResourceSet neutralResourceSet = Strings.ResourceManager.GetResourceSet(CultureInfo.CurrentCulture.Parent, true, false);
if (neutralResourceSet != null) {
neutralResourceSetCount = (ushort) neutralResourceSet.Cast<object>().Count();
}
HashSet<DictionaryEntry> defaultStringObjects = new HashSet<DictionaryEntry>(defaultResourceSet.Cast<DictionaryEntry>());
if (defaultStringObjects.Count == 0) {
ASF.ArchiLogger.LogNullError(nameof(defaultStringObjects));
return;
}
if (neutralResourceSetCount < defaultResourceSetCount) {
float translationCompleteness = currentResourceSetCount / (float) defaultResourceSetCount;
ASF.ArchiLogger.LogGenericInfo(string.Format(Strings.TranslationIncomplete, CultureInfo.CurrentCulture.Name, translationCompleteness.ToString("P1")));
ResourceSet currentResourceSet = Strings.ResourceManager.GetResourceSet(CultureInfo.CurrentCulture, true, true);
if (currentResourceSet == null) {
ASF.ArchiLogger.LogNullError(nameof(currentResourceSet));
return;
}
HashSet<DictionaryEntry> currentStringObjects = new HashSet<DictionaryEntry>(currentResourceSet.Cast<DictionaryEntry>());
if (currentStringObjects.Count >= defaultStringObjects.Count) {
// Either we have 100% finished translation, or we're missing it entirely and using en-US
HashSet<DictionaryEntry> testStringObjects = new HashSet<DictionaryEntry>(currentStringObjects);
testStringObjects.ExceptWith(defaultStringObjects);
// If we got 0 as final result, this is the missing language
// Otherwise it's just a small amount of strings that happen to be the same
if (testStringObjects.Count == 0) {
currentStringObjects = testStringObjects;
}
}
if (currentStringObjects.Count < defaultStringObjects.Count) {
float translationCompleteness = currentStringObjects.Count / (float) defaultStringObjects.Count;
ASF.ArchiLogger.LogGenericInfo(string.Format(Strings.TranslationIncomplete, CultureInfo.CurrentCulture.Name, translationCompleteness.ToString("P1")));
}
}
private static async Task InitGlobalDatabaseAndServices() {
@@ -285,7 +295,7 @@ namespace ArchiSteamFarm {
}
ArchiWebHandler.Init();
OS.Init();
OS.Init(GlobalConfig.Headless);
WCF.Init();
WebBrowser.Init();

View File

@@ -44,7 +44,7 @@ namespace ArchiSteamFarm {
internal const string ServiceDescription = "ASF is an application that allows you to farm steam cards using multiple steam accounts simultaneously.";
internal const string ServiceName = "ArchiSteamFarm";
internal const string StatisticsServer = "asf.justarchi.net";
internal const string VersionNumber = "2.2.3.1";
internal const string VersionNumber = "2.3.0.0";
internal static readonly Version Version = Assembly.GetEntryAssembly().GetName().Version;
}

View File

@@ -178,7 +178,7 @@ namespace ArchiSteamFarm {
}
// Always accept trades from SteamMasterID
if ((tradeOffer.OtherSteamID64 != 0) && ((tradeOffer.OtherSteamID64 == Bot.BotConfig.SteamMasterID) || (tradeOffer.OtherSteamID64 == Program.GlobalConfig.SteamOwnerID))) {
if ((tradeOffer.OtherSteamID64 != 0) && Bot.IsMaster(tradeOffer.OtherSteamID64)) {
return new ParseTradeResult(tradeOffer.TradeOfferID, tradeOffer.ItemsToGive.Count > 0 ? ParseTradeResult.EResult.AcceptedWithItemLose : ParseTradeResult.EResult.AcceptedWithoutItemLose);
}

View File

@@ -50,7 +50,7 @@ namespace ArchiSteamFarm {
StopServer();
}
public string GetStatus() => Program.GlobalConfig.SteamOwnerID == 0 ? "{}" : Bot.GetAPIStatus();
public string GetStatus() => Program.GlobalConfig.SteamOwnerID == 0 ? "{}" : Bot.GetAPIStatus(Bot.Bots);
public string HandleCommand(string input) {
if (string.IsNullOrEmpty(input)) {

View File

@@ -23,9 +23,9 @@
"ShutdownOnFarmingFinished": false,
"SteamLogin": null,
"SteamMasterClanID": 0,
"SteamMasterID": 0,
"SteamParentalPIN": "0",
"SteamPassword": null,
"SteamTradeToken": null,
"SteamUserPermissions": {},
"TradingPreferences": 0
}

View File

@@ -30,6 +30,7 @@ using System.Drawing.Design;
using System.IO;
using ConfigGenerator.JSON;
using Newtonsoft.Json;
using Wexman.Design;
namespace ConfigGenerator {
[SuppressMessage("ReSharper", "AutoPropertyCanBeMadeGetOnly.Global")]
@@ -112,10 +113,6 @@ namespace ConfigGenerator {
[JsonProperty(Required = Required.DisallowNull)]
public ulong SteamMasterClanID { get; set; } = 0;
[LocalizedCategory("Access")]
[JsonProperty(Required = Required.DisallowNull)]
public ulong SteamMasterID { get; set; } = 0;
[LocalizedCategory("Access")]
[JsonProperty]
public string SteamParentalPIN { get; set; } = "0";
@@ -129,6 +126,11 @@ namespace ConfigGenerator {
[JsonProperty]
public string SteamTradeToken { get; set; } = null;
[LocalizedCategory("Access")]
[Editor(typeof(GenericDictionaryEditor<ulong, EPermission>), typeof(UITypeEditor))]
[JsonProperty(Required = Required.DisallowNull)]
public Dictionary<ulong, EPermission> SteamUserPermissions { get; set; } = new Dictionary<ulong, EPermission>();
[LocalizedCategory("Advanced")]
[Editor(typeof(FlagEnumUiEditor), typeof(UITypeEditor))]
[JsonProperty(Required = Required.DisallowNull)]
@@ -191,6 +193,13 @@ namespace ConfigGenerator {
NamesDescending
}
internal enum EPermission : byte {
None,
FamilySharing,
Operator,
Master
}
[Flags]
internal enum ERedeemingPreferences : byte {
None = 0,

View File

@@ -46,11 +46,15 @@
<RunPostBuildEvent>OnOutputUpdated</RunPostBuildEvent>
</PropertyGroup>
<ItemGroup>
<Reference Include="GenericDictionaryEditor, Version=1.1.0.0, Culture=neutral, PublicKeyToken=7f1cce5280f1f8eb, processorArchitecture=MSIL">
<HintPath>..\packages\GenDictEdit.1.1.0\lib\net20\GenericDictionaryEditor.dll</HintPath>
</Reference>
<Reference Include="Newtonsoft.Json, Version=10.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
<HintPath>..\packages\Newtonsoft.Json.10.0.1-beta1\lib\net45\Newtonsoft.Json.dll</HintPath>
</Reference>
<Reference Include="System" />
<Reference Include="System.Core" />
<Reference Include="System.Design" />
<Reference Include="System.Drawing" />
<Reference Include="System.Windows.Forms" />
</ItemGroup>
@@ -103,6 +107,7 @@
<EmbeddedResource Include="Localization\CGStrings.el-GR.resx" />
<EmbeddedResource Include="Localization\CGStrings.es-ES.resx" />
<EmbeddedResource Include="Localization\CGStrings.fi-FI.resx" />
<EmbeddedResource Include="Localization\CGStrings.fr-CH.resx" />
<EmbeddedResource Include="Localization\CGStrings.fr-FR.resx" />
<EmbeddedResource Include="Localization\CGStrings.he-IL.resx" />
<EmbeddedResource Include="Localization\CGStrings.hi-IN.resx" />
@@ -121,6 +126,7 @@
<EmbeddedResource Include="Localization\CGStrings.pt-PT.resx" />
<EmbeddedResource Include="Localization\CGStrings.ro-RO.resx" />
<EmbeddedResource Include="Localization\CGStrings.ru-RU.resx" />
<EmbeddedResource Include="Localization\CGStrings.sk-SK.resx" />
<EmbeddedResource Include="Localization\CGStrings.sr-CS.resx" />
<EmbeddedResource Include="Localization\CGStrings.sr-SP.resx" />
<EmbeddedResource Include="Localization\CGStrings.sv-SE.resx" />

View File

@@ -118,7 +118,7 @@
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="CategoryAccess" xml:space="preserve">
<value>Zugriff</value>
<value>Zugang</value>
</data>
<data name="CategoryAdvanced" xml:space="preserve">
<value>Erweiterte Einstellungen</value>
@@ -130,7 +130,7 @@
<value>Fehlersuche</value>
</data>
<data name="CategoryPerformance" xml:space="preserve">
<value>Leistung</value>
<value>Sammelprozess</value>
</data>
<data name="CategoryUpdates" xml:space="preserve">
<value>Aktualisierungen</value>
@@ -151,11 +151,11 @@
<value>Konfigurationsverzeichnis konnte nicht gefunden werden!</value>
</data>
<data name="ErrorConfigPropertyInvalid" xml:space="preserve">
<value>Konfigurierter {0} Wert ist ungültig: {1}</value>
<value>Konfigurierte {0} Einstellung ist ungültig: {1}</value>
<comment>{0} will be replaced by name of the configuration property, {1} will be replaced by invalid value</comment>
</data>
<data name="ErrorInvalidCurrentCulture" xml:space="preserve">
<value>Deine festgelegte Lokalisierung ist ungültig, der ConfigGenerator läuft mit der Standard-Lokalisierung weiter!</value>
<value>Dein festgelegtes CurrentCulture ist ungültig, der ConfigGenerator läuft mit dem Vorgegebenen weiter!</value>
</data>
<data name="ErrorNameAlreadyUsed" xml:space="preserve">
<value>Dieser Name wird bereits verwendet!</value>
@@ -194,10 +194,10 @@ Bitte benutze eine passende ConfigGenerator Version für dein ASF. Du wirst zur
<comment>{0} will be replaced by "SteamLogin" configuration property, {1} will be replaced by "SteamPassword" configuration property</comment>
</data>
<data name="TutorialBotFormReady" xml:space="preserve">
<value>Dein ASF ist nun bereit! Starte einfach ASF.exe und wenn du alles richtig eingegeben hast, solltest du bemerken, dass ASF sich anmelden und zu idlen anfängt. Wenn du den SteamGuard oder die Zwei-Faktor-Authentifizierung aktiviert hast, wird dich ASF möglicherweise nach diesen Details während der Ausführung fragen.</value>
<value>Dein ASF ist nun bereit! Starte einfach ASF.exe und wenn du alles richtig eingegeben hast, solltest du bemerken, dass ASF sich anmeldet und zu sammeln anfängt. Wenn du den SteamGuard oder die Zwei-Faktor-Authentifizierung aktiviert hast, wird dich ASF möglicherweise nach diesen Details während der Ausführung fragen.</value>
</data>
<data name="TutorialFinished" xml:space="preserve">
<value>Herzlichen Glückwunsch! Du hast alles, was benötigt wird, um ASF zu nutzen getan, hiermit ist auch das Tutorial beendet, das wir für dich vorbereitet hatten. Es wird jetzt dringend empfohlen den gesamten Abschnitt "Configuration" im Wiki zu lesen, da ASF einige wirklich nette Features für dich zur Konfiguration anbietet wie offline Farmen oder das einstellen des effizientesten Farm-Algorithmus wenn das Konto sich im Leerlauf befindet. All das ist optional und du kannst den Konfigurator jederzeit schließen wenn du dies willst. Wir hoffen, dass du die Software, die wir für dich programmiert haben, genießen!</value>
<value>Herzlichen Glückwunsch! Du hast alles, was benötigt wird, um ASF zu nutzen getan, hiermit ist auch das Tutorial beendet, das wir für dich vorbereitet hatten. Es wird jetzt dringend empfohlen den gesamten Abschnitt "Configuration" im Wiki zu lesen, da ASF einige wirklich nette Funktionen für dich zur Konfiguration anbietet, wie Offline-Sammeln oder die Einstellung des effizientesten Sammel-Algorithmus für dein Benutzerkonto. All das ist optional und du kannst den Konfigurator jederzeit schließen, wenn du das möchtest. Wir hoffen, dass du die Software, die wir für dich programmiert haben, genießt!</value>
</data>
<data name="TutorialMainFormBotsManagementButtons" xml:space="preserve">
<value>Am oberen Rand des Fensters kannst du die aktuell geladenen Konfigurationen sehen und 3 zusätzliche Schaltflächen zum Entfernen [-], Umbenennen [~] und Hinzufügen [+] neuer Konfigurationen.</value>
@@ -207,7 +207,7 @@ Bitte benutze eine passende ConfigGenerator Version für dein ASF. Du wirst zur
<value>Bitte beachte, dass alle Informationen über verfügbare Konfigurationseigenschaften einschließlich ihrer Beschreibung, ihrem Zweck und ihrer akzeptierten Werte in unserer GitHub Wiki verfügbar sind. Bitte verwende dieses als Referenz.</value>
</data>
<data name="TutorialMainFormConfigurationWindow" xml:space="preserve">
<value>In der Mitte des Fensters kannst du alle Einstellungs-Werte konfigurieren, die für deine aktuell ausgewählte Konfiguration zur Verfügung stehen.</value>
<value>In der Mitte des Fensters kannst du alle verfügbaren Eigenschaften, für deine aktuell ausgewählte Konfiguration, konfigurieren.</value>
</data>
<data name="TutorialMainFormFinished" xml:space="preserve">
<value>Alles klar, fangen wir mit der Konfiguration unseres ASF an. Klicke auf das Pluszeichen [+], um dein erstes Steam-Benutzerkonto hinzuzufügen!</value>
@@ -221,11 +221,11 @@ Bitte benutze eine passende ConfigGenerator Version für dein ASF. Du wirst zur
<value>Das ist das Hauptfenster des ASF ConfigGenerator, es ist wirklich einfach zu nutzen!</value>
</data>
<data name="TutorialNewBotFormFinished" xml:space="preserve">
<value>Wie du sehen kannst, ist dein Roboter nun bereit konfiguriert zu werden! Das erste was du tun solltest, ist es die {0} Eigenschaft von "unwahr" auf "wahr" zu ändern, versuche es!</value>
<value>Wie du sehen kannst, dein Bot ist nun bereit um konfiguriert zu werden! Das erste was du tun solltest, ist den {0} Wert von "false" auf "true" zu ändern, versuche es!</value>
<comment>{0} will be replaced by name of the configuration property ("Enabled")</comment>
</data>
<data name="TutorialNewBotFormShown" xml:space="preserve">
<value>Gute Arbeit! Du wirst nun nach einem Roboter-Namen gefragt. Ein gutes Beispiel wäre der Spitzname deines Steam-Kontos, welches du zur Konfiguration nutzt oder jeder andere Name deiner Wahl, welcher es dir leicht macht dich mit dem Roboter (Bot) Exemplar zu verbinden.</value>
<value>Gute Arbeit! Du wirst nun nach einem Bot-Namen gefragt. Ein gutes Beispiel wäre der Spitzname deines Steam-Kontos, welches du zur Konfiguration nutzt oder jeder andere Name deiner Wahl, welcher es dir leicht macht dich mit der Bot-Instanz zu verbinden.</value>
</data>
<data name="TutorialStart" xml:space="preserve">
<value>Herzlich Willkommen! Ich habe festgestellt, dass du den ASF ConfigGenerator zum ersten Mal benutzt, lass' mich dir ein wenig helfen.</value>

View File

@@ -0,0 +1,241 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" id="root">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace"/>
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0"/>
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string"/>
<xsd:attribute name="type" type="xsd:string"/>
<xsd:attribute name="mimetype" type="xsd:string"/>
<xsd:attribute ref="xml:space"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string"/>
<xsd:attribute name="name" type="xsd:string"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1"/>
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2"/>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1"/>
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3"/>
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4"/>
<xsd:attribute ref="xml:space"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1"/>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required"/>
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="CategoryAccess" xml:space="preserve">
<value>Accès</value>
</data>
<data name="CategoryAdvanced" xml:space="preserve">
<value>Configuration avancée</value>
</data>
<data name="CategoryCore" xml:space="preserve">
<value>Configuration minimale</value>
</data>
<data name="CategoryDebugging" xml:space="preserve">
<value>Débogage</value>
</data>
<data name="CategoryPerformance" xml:space="preserve">
<value>Performance</value>
</data>
<data name="CategoryUpdates" xml:space="preserve">
<value>Mises à jour</value>
</data>
<data name="ConfirmRemoval" xml:space="preserve">
<value>Voulez-vous vraiment supprimer cette configuration ?</value>
</data>
<data name="ErrorBotNameEmpty" xml:space="preserve">
<value>Le nom de votre bot est vide !</value>
</data>
<data name="ErrorCantRemoveGlobalConfig" xml:space="preserve">
<value>Vous ne pouvez pas supprimer la configuration globale !</value>
</data>
<data name="ErrorCantRenameGlobalConfig" xml:space="preserve">
<value>Vous ne pouvez pas renommer la configuration globale !</value>
</data>
<data name="ErrorConfigDirectoryNotFound" xml:space="preserve">
<value>Le répertoire de configuration est introuvable !</value>
</data>
<data name="ErrorConfigPropertyInvalid" xml:space="preserve">
<value>Propriété {0} configuré nest pas valide : {1}</value>
<comment>{0} will be replaced by name of the configuration property, {1} will be replaced by invalid value</comment>
</data>
<data name="ErrorInvalidCurrentCulture" xml:space="preserve">
<value>Votre CurrentCulture fourni nest pas valide, ConfigGenerator continuera à fonctionner avec celui par défaut !</value>
</data>
<data name="ErrorNameAlreadyUsed" xml:space="preserve">
<value>Ce nom est déjà utilisé !</value>
<comment>This happens e.g. when user wants to create a bot with name that exists already</comment>
</data>
<data name="ErrorNameReserved" xml:space="preserve">
<value>Ce nom est réservé !</value>
<comment>This happens e.g. when user wants to create a bot with reserved name, such as "ASF"</comment>
</data>
<data name="ErrorObjectIsNull" xml:space="preserve">
<value>{0} est invalide !</value>
<comment>{0} will be replaced by object's name</comment>
</data>
<data name="ErrorVersionMismatch" xml:space="preserve">
<value>Vous tentez d'utiliser une version de ConfigGenerator différente d'ASF !
ASF : {0} | ConfigGenerator : {1}
Veuillez utiliser une version de ConfigGenerator correspondant à celle d'ASF. Vous allez être redirigé vers la version correcte...</value>
<comment>{0} will be replaced by ASF version (string), {1} will be replaced by ConfigGenerator version (string). Please note that this string should include newlines for formatting.</comment>
</data>
<data name="New" xml:space="preserve">
<value>Nouveau</value>
<comment>This is used as MessageBox title</comment>
</data>
<data name="Removal" xml:space="preserve">
<value>Suppression</value>
<comment>This is used as MessageBox title</comment>
</data>
<data name="Rename" xml:space="preserve">
<value>Renommer</value>
<comment>This is used as MessageBox title</comment>
</data>
<data name="TutorialBotFormEnabled" xml:space="preserve">
<value>Excellent ! Votre bot est maintenant activé. En fait, cest tout ce que vous avez à faire pour pouvoir l'utiliser dans ASF, mais vous allez devoir configurer au moins 2 paramètres supplémentaires : {0} et {1}. Si vous voulez continuer le tutoriel, veuillez le faire maintenant. Noubliez pas de consulter le wiki si vous ne savez pas comment un paramètre doit être configuré, ou si vous avez besoin daide supplémentaire.</value>
<comment>{0} will be replaced by "SteamLogin" configuration property, {1} will be replaced by "SteamPassword" configuration property</comment>
</data>
<data name="TutorialBotFormReady" xml:space="preserve">
<value>Votre programme ASF est maintenant prêt ! Lancez simplement l'exécutable ASF.exe et si vous avez tout entré correctement, vous devriez remarquer que ASF se connecte et démarre la collecte des cartes. Si vous avez SteamGuard ou l'authentification mobile à deux facteurs activée, ASF vous demandera ces informations de connexion au démarrage.</value>
</data>
<data name="TutorialFinished" xml:space="preserve">
<value>Félicitations ! Vous avez fait tout ce qui est nécessaire afin de rendre ASF utilisable, cela termine également le tutoriel que nous avions préparé pour vous. Il est fortement recommandé de lire, en entier, la section à propos des réglages sur le wiki , puisqu'ASF offre des fonctionnalités très utiles que vous pouvez configurer, comme collecter en hors-ligne ou régler ASF pour utiliser lalgorithme le plus efficace pour votre compte. Tout cela est facultatif, vous êtes libre de fermer notre configurateur quand vous le souhaitez. Nous espérons que vous apprécierez le logiciel que nous avons codé pour vous !</value>
</data>
<data name="TutorialMainFormBotsManagementButtons" xml:space="preserve">
<value>En haut de la fenêtre vous pouvez voir les noms des bots créés, et 3 autres boutons pour enlever [-], renommer [~] et ajouter de nouvelles configurations [+].</value>
<comment>If possible, try to keep visual representation of buttons: [-], [~] and [+]</comment>
</data>
<data name="TutorialMainFormConfigurationWiki" xml:space="preserve">
<value>Veuillez noter que toutes les informations sur les paramètres de configuration disponibles, y compris leurs descriptions, rôles et valeurs acceptées, sont disponibles sur notre wiki de GitHub. Utilisez-le comme référence.</value>
</data>
<data name="TutorialMainFormConfigurationWindow" xml:space="preserve">
<value>Au milieu de la fenêtre, vous pouvez configurer toutes les propriétés disponibles pour la config en cours de sélection.</value>
</data>
<data name="TutorialMainFormFinished" xml:space="preserve">
<value>Très bien, commençons la configuration d'ASF. Cliquez sur le bouton [+] pour ajouter votre premier compte Steam !</value>
<comment>If possible, try to keep visual representation of [+] button</comment>
</data>
<data name="TutorialMainFormHelpButton" xml:space="preserve">
<value>Dans le coin supérieur droit, vous pouvez trouver le bouton aide [?], qui vous redirigera vers le wiki d'ASF pour plus dinformations.</value>
<comment>If possible, try to keep visual representation of [?] button</comment>
</data>
<data name="TutorialMainFormShown" xml:space="preserve">
<value>Il s'agit de l'écran principal du ConfigGenerator d'ASF, il est très simple d'utilisation !</value>
</data>
<data name="TutorialNewBotFormFinished" xml:space="preserve">
<value>Comme vous pouvez le voir, votre bot est maintenant prêt pour être configuré ! La première chose à faire est de changer la propriété {0} de false à true, essayez !</value>
<comment>{0} will be replaced by name of the configuration property ("Enabled")</comment>
</data>
<data name="TutorialNewBotFormShown" xml:space="preserve">
<value>Bon travail ! Vous allez devoir trouver un nom pour votre bot. Un bon exemple de nom serait d'utiliser celui de votre compte Steam, ou tout autre nom de votre choix qui sera facile à associer avec cette instance de bot.</value>
</data>
<data name="TutorialStart" xml:space="preserve">
<value>Bienvenue ! Jai remarqué que vous utilisez ConfigGenerator ASF pour la première fois, alors laissez-moi vous aider un peu.</value>
</data>
<data name="UserInputBotName" xml:space="preserve">
<value>Veuillez entrer le nom du bot : </value>
<comment>Please note that this translation should end with space</comment>
</data>
<data name="WarningConfigPropertyModified" xml:space="preserve">
<value>{0} a pris la valeur : {1}</value>
<comment>{0} will be replaced by name of the configuration property, {1} will be replaced by new value</comment>
</data>
</root>

View File

@@ -117,32 +117,74 @@
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="CategoryAccess" xml:space="preserve">
<value>Hozzáférés</value>
</data>
<data name="CategoryAdvanced" xml:space="preserve">
<value>Haladó beállítások</value>
</data>
<data name="CategoryCore" xml:space="preserve">
<value>Mag</value>
</data>
<data name="CategoryDebugging" xml:space="preserve">
<value>Hibakeresés</value>
</data>
<data name="CategoryPerformance" xml:space="preserve">
<value>Teljesítmény</value>
</data>
<data name="CategoryUpdates" xml:space="preserve">
<value>Frissítések</value>
</data>
<data name="ConfirmRemoval" xml:space="preserve">
<value>Biztosan eltávolítod ezt a config fájlt?</value>
</data>
<data name="ErrorBotNameEmpty" xml:space="preserve">
<value>A bot neve üres!</value>
</data>
<data name="ErrorCantRemoveGlobalConfig" xml:space="preserve">
<value>Nem távolíthatod el a globális config fájlt!</value>
</data>
<data name="ErrorCantRenameGlobalConfig" xml:space="preserve">
<value>Nem lehet átnevezni a globális config fájlt!</value>
</data>
<data name="ErrorConfigDirectoryNotFound" xml:space="preserve">
<value>Config könyvtár nem található!</value>
</data>
<data name="ErrorConfigPropertyInvalid" xml:space="preserve">
<value>A beállított {0} tulajdonság érvénytelen: {1}</value>
<comment>{0} will be replaced by name of the configuration property, {1} will be replaced by invalid value</comment>
</data>
<data name="ErrorInvalidCurrentCulture" xml:space="preserve">
<value>A megadott CurrentCulture érték érvénytelen, ConfigGenerator az alapértelmezettel fut tovább!</value>
</data>
<data name="ErrorNameAlreadyUsed" xml:space="preserve">
<value>Ez a név már használatban van!</value>
<comment>This happens e.g. when user wants to create a bot with name that exists already</comment>
</data>
<data name="ErrorNameReserved" xml:space="preserve">
<value>Ez a név már foglalt!</value>
<comment>This happens e.g. when user wants to create a bot with reserved name, such as "ASF"</comment>
</data>
<data name="ErrorObjectIsNull" xml:space="preserve">
<value>{0} értéke nulla!</value>
<comment>{0} will be replaced by object's name</comment>
</data>
<data name="ErrorVersionMismatch" xml:space="preserve">
<value>Kérlek használj egy {0} binárissal megegyező verziószámú {1}-t. Átirányítunk a megfelelő kiadáshoz...</value>
<comment>{0} will be replaced by ASF version (string), {1} will be replaced by ConfigGenerator version (string). Please note that this string should include newlines for formatting.</comment>
</data>
<data name="New" xml:space="preserve">
<value>Új</value>
<comment>This is used as MessageBox title</comment>
</data>
<data name="Removal" xml:space="preserve">
<value>Eltávolítás</value>
<comment>This is used as MessageBox title</comment>
</data>
<data name="Rename" xml:space="preserve">
<value>Átnevezés</value>
<comment>This is used as MessageBox title</comment>
</data>

View File

@@ -155,7 +155,7 @@
<comment>{0} will be replaced by name of the configuration property, {1} will be replaced by invalid value</comment>
</data>
<data name="ErrorInvalidCurrentCulture" xml:space="preserve">
<value>De opgegeven CurrentCulture is ongeldig, ConfigGenerator blijft draaien met de standaard!</value>
<value>De opgegeven CurrentCulture is ongeldig. ConfigGenerator blijft ingesteld op de standaardtaal!</value>
</data>
<data name="ErrorNameAlreadyUsed" xml:space="preserve">
<value>Deze naam is al in gebruik!</value>
@@ -174,7 +174,7 @@
ASF: {0} | ConfigGenerator: {1}
Gebruik een zelfde versie ConfigGenerator voor je ASF bestand. Je wordt verwezen naar de juiste release...</value>
Gebruik dezelfde versie van de ConfigGenerator als de ASF versie. Je wordt nu doorverwezen naar de juiste versie...</value>
<comment>{0} will be replaced by ASF version (string), {1} will be replaced by ConfigGenerator version (string). Please note that this string should include newlines for formatting.</comment>
</data>
<data name="New" xml:space="preserve">
@@ -190,46 +190,46 @@ Gebruik een zelfde versie ConfigGenerator voor je ASF bestand. Je wordt verwezen
<comment>This is used as MessageBox title</comment>
</data>
<data name="TutorialBotFormEnabled" xml:space="preserve">
<value>Proficiat! Je bot instance is actief. Feitelijk was dat alles dat je moest doen om deze bot in ASF te gebruiken, maar je wilt misschien nog 2 andere config waardes instellen: {0} en {1}.
Je kan, als je wilt, doorgaan met deze tutorial. Vergeet niet de wiki te gebruiken als je niet zeker weet hoe een waarde moet worden ingesteld. Dit geldt ook als je meer hulp nodig hebt.</value>
<value>Uitstekend! Je bot is geactiveerd. Dit was alles wat je moest doen om deze bot in ASF te gebruiken. Waarschijnlijk wil je minstens nog 2 instellingen aanpassen. Je {0} en {1}.
Je kan, als je wilt, doorgaan met deze handleiding. Raadpleeg de wiki als je niet zeker weet hoe een eigenschap moet worden ingesteld of indien je meer hulp nodig hebt.</value>
<comment>{0} will be replaced by "SteamLogin" configuration property, {1} will be replaced by "SteamPassword" configuration property</comment>
</data>
<data name="TutorialBotFormReady" xml:space="preserve">
<value>Je ASF is nu klaar! Simpelweg ASF.exe starten en als je alles correct hebt ingevuld, zul je merken dat ASF aan het inloggen en begonnen is met idlen. Als je SteamGuard twee factor authenticatie aan hebt staan, kan het zijn dat ASF voor deze gegevens vraagt tijdens het starten.</value>
<value>Je ASF is nu klaar voor gebruik! Start nu simpelweg het ASF.exe bestand. Als je alles correct hebt ingevuld, zul je zien dat ASF zal inloggen en gaat farmen. Indien SteamGuard of de twee-factor authenticatie is geactiveerd, zal ASF tijdens het starten om deze gegevens vragen.</value>
</data>
<data name="TutorialFinished" xml:space="preserve">
<value>Proficiat! Je hebt alles gedaan dat nodig is om ASF bruikbaar te maken, hiermee is deze tutorial die we hebben klaargezet ook afgerond. Het wordt sterk aanbevolen om de hele 'configuration' sectie op de wiki te lezen, aangezien ASF leuke eigenschappen heeft die geconfigureerd kunnen worden. Zoals offline farmen of afstemmen van ASF voor het meest efficiënte idling algoritme voor je account. Dit alles is optioneel en je kan de ConfigGenerator afsluiten als je dit wilt. We hopen dat je zult genieten van de software die we voor jou hebben geschreven!</value>
<value>Proficiat! Je hebt alles gedaan wat nodig is om ASF te kunnen gebruiken. Hiermee is deze handleiding dan ook afgerond. Het is aanbevolen om de volledige 'configuration' sectie op de wiki te lezen, aangezien ASF interessante opties heeft die geconfigureerd kunnen worden. Zoals offline farmen of het afstemmen van ASF voor het meest efficiënte farming algoritme voor je account. Dit alles is optioneel en je kan de ConfigGenerator nu afsluiten als je wilt. We hopen dat je veel plezier zult hebben van de software die we voor jou hebben gemaakt!</value>
</data>
<data name="TutorialMainFormBotsManagementButtons" xml:space="preserve">
<value>Bovenaan het venster zie je de huidig geladen configuraties en 3 extra knoppen voor verwijderen [-], hernoemen [~] en toevoegen van nieuwe configuraties [+].</value>
<comment>If possible, try to keep visual representation of buttons: [-], [~] and [+]</comment>
</data>
<data name="TutorialMainFormConfigurationWiki" xml:space="preserve">
<value>Hou rekening dat alle informatie met betrekking tot alle beschikbare config eigenschappen, inclusief hun uitleg, doel en geaccepteerde waardes, beschikbaar is op onze GitHub wiki. Graag dit als referentie gebruiken.</value>
<value>Alle informatie met betrekking tot de beschikbare configuratie-eigenschappen, inclusief uitleg, doel en geldige instellingen, is beschikbaar op onze GitHub wiki. Gebruik dit als referentie.</value>
</data>
<data name="TutorialMainFormConfigurationWindow" xml:space="preserve">
<value>In het midden van de venster kan alle config eigenschappen die beschikbaar zijn configureren. Dit geldt voor de huidig geselecteerde config.</value>
<value>In het midden van het venster kun je alle configuratie-eigenschappen instellen die beschikbaar zijn voor de geselecteerde configuratie.</value>
</data>
<data name="TutorialMainFormFinished" xml:space="preserve">
<value>Laten we beginnen met het configureren van ASF. Klik op de plus [+] knop om je eerste Steam account toe te voegen!</value>
<comment>If possible, try to keep visual representation of [+] button</comment>
</data>
<data name="TutorialMainFormHelpButton" xml:space="preserve">
<value>In de bovenrechter hoek vindt je de help knop [?] die je doorverwijst naar de ASF wiki voor meer informatie.</value>
<value>Rechtsboven vind je de help knop [?] die je doorverwijst naar de ASF wiki voor meer informatie.</value>
<comment>If possible, try to keep visual representation of [?] button</comment>
</data>
<data name="TutorialMainFormShown" xml:space="preserve">
<value>Dit is het ASF ConfigGenerator hoofdscherm, het is erg makkelijk om te gebruiken!</value>
</data>
<data name="TutorialNewBotFormFinished" xml:space="preserve">
<value>Zoals je ziet, je bot is nu gereed voor configuratie! Het eerste dat je wilt doen is {0} eigenschap schakelen van false naar true, probeer het!</value>
<value>Zoals je ziet is je bot nu gereed voor configuratie! Het eerste wat je doet is de {0} instelling veranderen van 'false' naar 'true'. Probeer maar!</value>
<comment>{0} will be replaced by name of the configuration property ("Enabled")</comment>
</data>
<data name="TutorialNewBotFormShown" xml:space="preserve">
<value>Goed gedaan! Je wordt nu gevraagd voor een naam voor je bot. Een goede voorbeeld is de nickname die je voor je Steam account gebruikt. Of elk ander naam die makkelijk voor jou is om te herinneren om welke bot het gaat.</value>
<value>Goed gedaan! Je wordt nu gevraagd om een naam voor je bot. Een goed voorbeeld is de bijnaam die je voor je Steam account gebruikt. Een andere naam kan natuurlijk ook, zolang het voor jou makkelijk te onthouden is welke naam bij de betreffende bot hoort.</value>
</data>
<data name="TutorialStart" xml:space="preserve">
<value>Welkom! Ik zie dat dit de eerste keer is dat je ASF ConfigGenerator gebruikt, laat me je daar een beetje mee helpen.</value>
<value>Welkom! Ik zie dat dit de eerste keer is dat je de ASF ConfigGenerator gebruikt, laat me je daar een beetje bij helpen.</value>
</data>
<data name="UserInputBotName" xml:space="preserve">
<value>Voer een nieuwe naam in voor de bot: </value>

View File

@@ -124,7 +124,7 @@
<value>Geavanceerd</value>
</data>
<data name="CategoryCore" xml:space="preserve">
<value>Kern</value>
<value>Login</value>
</data>
<data name="CategoryDebugging" xml:space="preserve">
<value>Debuggen</value>
@@ -136,26 +136,26 @@
<value>Updates</value>
</data>
<data name="ConfirmRemoval" xml:space="preserve">
<value>Wil je deze configuratie echt verwijderen?</value>
<value>Weet je zeker dat je deze configuratie wilt verwijderen?</value>
</data>
<data name="ErrorBotNameEmpty" xml:space="preserve">
<value>Je bot heeft geen naam!</value>
</data>
<data name="ErrorCantRemoveGlobalConfig" xml:space="preserve">
<value>Je kan het globale config bestand niet verwijderen!</value>
<value>Je kan het globale configuratiebestand niet verwijderen!</value>
</data>
<data name="ErrorCantRenameGlobalConfig" xml:space="preserve">
<value>Je kan het globale config bestand niet hernoemen!</value>
<value>Je kan het globale configuratiebestand niet hernoemen!</value>
</data>
<data name="ErrorConfigDirectoryNotFound" xml:space="preserve">
<value>Configuratiefolder kon niet gevonden worden!</value>
<value>Configuratiemap kon niet gevonden worden!</value>
</data>
<data name="ErrorConfigPropertyInvalid" xml:space="preserve">
<value>Geconfigureerde {0} eigenschap is ongeldig: {1}</value>
<value>Geconfigureerde {0} instelling is ongeldig: {1}</value>
<comment>{0} will be replaced by name of the configuration property, {1} will be replaced by invalid value</comment>
</data>
<data name="ErrorInvalidCurrentCulture" xml:space="preserve">
<value>De opgegeven CurrentCulture is ongeldig, ConfigGenerator blijft draaien met de standaard!</value>
<value>De opgegeven CurrentCulture is ongeldig. ConfigGenerator blijft ingesteld op de standaardtaal!</value>
</data>
<data name="ErrorNameAlreadyUsed" xml:space="preserve">
<value>Deze naam is al in gebruik!</value>
@@ -166,7 +166,7 @@
<comment>This happens e.g. when user wants to create a bot with reserved name, such as "ASF"</comment>
</data>
<data name="ErrorObjectIsNull" xml:space="preserve">
<value>{0} is nul!</value>
<value>{0} is null!</value>
<comment>{0} will be replaced by object's name</comment>
</data>
<data name="ErrorVersionMismatch" xml:space="preserve">
@@ -174,7 +174,7 @@
ASF: {0} | ConfigGenerator: {1}
Gebruik een zelfde versie ConfigGenerator voor je ASF bestand. Je wordt verwezen naar de juiste release...</value>
Gebruik dezelfde versie van de ConfigGenerator als de ASF versie. Je wordt nu doorverwezen naar de juiste versie...</value>
<comment>{0} will be replaced by ASF version (string), {1} will be replaced by ConfigGenerator version (string). Please note that this string should include newlines for formatting.</comment>
</data>
<data name="New" xml:space="preserve">
@@ -190,46 +190,46 @@ Gebruik een zelfde versie ConfigGenerator voor je ASF bestand. Je wordt verwezen
<comment>This is used as MessageBox title</comment>
</data>
<data name="TutorialBotFormEnabled" xml:space="preserve">
<value>Proficiat! Je bot instance is actief. Feitelijk was dat alles dat je moest doen om deze bot in ASF te gebruiken, maar je wilt misschien nog 2 andere config waardes instellen: {0} en {1}.
Je kan, als je wilt, doorgaan met deze tutorial. Vergeet niet de wiki te gebruiken als je niet zeker weet hoe een waarde moet worden ingesteld. Dit geldt ook als je meer hulp nodig hebt.</value>
<value>Uitstekend! Je bot is geactiveerd. Dit was alles wat je moest doen om deze bot in ASF te gebruiken. Waarschijnlijk wil je minstens nog 2 instellingen aanpassen. Je {0} en {1}.
Je kan, als je wilt, doorgaan met deze handleiding. Raadpleeg de wiki als je niet zeker weet hoe een eigenschap moet worden ingesteld of indien je meer hulp nodig hebt.</value>
<comment>{0} will be replaced by "SteamLogin" configuration property, {1} will be replaced by "SteamPassword" configuration property</comment>
</data>
<data name="TutorialBotFormReady" xml:space="preserve">
<value>Je ASF is nu klaar! Simpelweg ASF.exe starten en als je alles correct hebt ingevuld, zul je merken dat ASF aan het inloggen en begonnen is met idlen. Als je SteamGuard twee factor authenticatie aan hebt staan, kan het zijn dat ASF voor deze gegevens vraagt tijdens het starten.</value>
<value>Je ASF is nu klaar voor gebruik! Start nu simpelweg het ASF.exe bestand. Als je alles correct hebt ingevuld, zul je zien dat ASF zal inloggen en gaat farmen. Indien SteamGuard of de twee-factor authenticatie is geactiveerd, zal ASF tijdens het starten om deze gegevens vragen.</value>
</data>
<data name="TutorialFinished" xml:space="preserve">
<value>Proficiat! Je hebt alles gedaan dat nodig is om ASF bruikbaar te maken, hiermee is deze tutorial die we hebben klaargezet ook afgerond. Het wordt sterk aanbevolen om de hele 'configuration' sectie op de wiki te lezen, aangezien ASF leuke eigenschappen heeft die geconfigureerd kunnen worden. Zoals offline farmen of afstemmen van ASF voor het meest efficiënte idling algoritme voor je account. Dit alles is optioneel en je kan de ConfigGenerator afsluiten als je dit wilt. We hopen dat je zult genieten van de software die we voor jou hebben geschreven!</value>
<value>Proficiat! Je hebt alles gedaan wat nodig is om ASF te kunnen gebruiken. Hiermee is deze handleiding dan ook afgerond. Het is aanbevolen om de volledige 'configuration' sectie op de wiki te lezen, aangezien ASF interessante opties heeft die geconfigureerd kunnen worden. Zoals offline farmen of het afstemmen van ASF voor het meest efficiënte farming algoritme voor je account. Dit alles is optioneel en je kan de ConfigGenerator nu afsluiten als je wilt. We hopen dat je veel plezier zult hebben van de software die we voor jou hebben gemaakt!</value>
</data>
<data name="TutorialMainFormBotsManagementButtons" xml:space="preserve">
<value>Bovenaan het venster zie je de huidig geladen configuraties en 3 extra knoppen voor verwijderen [-], hernoemen [~] en toevoegen van nieuwe configuraties [+].</value>
<comment>If possible, try to keep visual representation of buttons: [-], [~] and [+]</comment>
</data>
<data name="TutorialMainFormConfigurationWiki" xml:space="preserve">
<value>Hou rekening dat alle informatie met betrekking tot alle beschikbare config eigenschappen, inclusief hun uitleg, doel en geaccepteerde waardes, beschikbaar is op onze GitHub wiki. Graag dit als referentie gebruiken.</value>
<value>Alle informatie met betrekking tot de beschikbare configuratie-eigenschappen, inclusief uitleg, doel en geldige instellingen, is beschikbaar op onze GitHub wiki. Gebruik dit als referentie.</value>
</data>
<data name="TutorialMainFormConfigurationWindow" xml:space="preserve">
<value>In het midden van de venster kan alle config eigenschappen die beschikbaar zijn configureren. Dit geldt voor de huidig geselecteerde config.</value>
<value>In het midden van het venster kun je alle configuratie-eigenschappen instellen die beschikbaar zijn voor de geselecteerde configuratie.</value>
</data>
<data name="TutorialMainFormFinished" xml:space="preserve">
<value>Laten we beginnen met het configureren van ASF. Klik op de plus [+] knop om je eerste Steam account toe te voegen!</value>
<comment>If possible, try to keep visual representation of [+] button</comment>
</data>
<data name="TutorialMainFormHelpButton" xml:space="preserve">
<value>In de bovenrechter hoek vindt je de help knop [?] die je doorverwijst naar de ASF wiki voor meer informatie.</value>
<value>Rechtsboven vind je de help knop [?] die je doorverwijst naar de ASF wiki voor meer informatie.</value>
<comment>If possible, try to keep visual representation of [?] button</comment>
</data>
<data name="TutorialMainFormShown" xml:space="preserve">
<value>Dit is het ASF ConfigGenerator hoofdscherm, het is erg makkelijk om te gebruiken!</value>
</data>
<data name="TutorialNewBotFormFinished" xml:space="preserve">
<value>Zoals je ziet, je bot is nu gereed voor configuratie! Het eerste dat je wilt doen is {0} eigenschap schakelen van false naar true, probeer het!</value>
<value>Zoals je ziet is je bot nu gereed voor configuratie! Het eerste wat je doet is de {0} instelling veranderen van 'false' naar 'true'. Probeer maar!</value>
<comment>{0} will be replaced by name of the configuration property ("Enabled")</comment>
</data>
<data name="TutorialNewBotFormShown" xml:space="preserve">
<value>Goed gedaan! Je wordt nu gevraagd voor een naam voor je bot. Een goede voorbeeld is de nickname die je voor je Steam account gebruikt. Of elk ander naam die makkelijk voor jou is om te herinneren om welke bot het gaat.</value>
<value>Goed gedaan! Je wordt nu gevraagd om een naam voor je bot. Een goed voorbeeld is de bijnaam die je voor je Steam account gebruikt. Een andere naam kan natuurlijk ook, zolang het voor jou makkelijk te onthouden is welke naam bij de betreffende bot hoort.</value>
</data>
<data name="TutorialStart" xml:space="preserve">
<value>Welkom! Ik zie dat dit de eerste keer is dat je ASF ConfigGenerator gebruikt, laat me je daar een beetje mee helpen.</value>
<value>Welkom! Ik zie dat dit de eerste keer is dat je de ASF ConfigGenerator gebruikt, laat me je daar een beetje bij helpen.</value>
</data>
<data name="UserInputBotName" xml:space="preserve">
<value>Voer een nieuwe naam in voor de bot: </value>

View File

@@ -190,7 +190,7 @@ ASF: {0} | ConfigGenerator: {1}
<comment>This is used as MessageBox title</comment>
</data>
<data name="TutorialBotFormEnabled" xml:space="preserve">
<value>Превосходно! Ваш бот теперь включён. Это практически всё, что вам нужно, чтобы использовать этого бота в ASF, но возможно вы захотите изменить ещё как минимум два параметра: {0} и {1}. Если вы хотите продолжить обучение - пожалуйста сделайте это. Вы можете свериться с wiki, если вы не уверены, как настраивать конкретный параметр, или если вам нужна дополнительная помощь.</value>
<value>Превосходно! Ваш бот теперь включён. Это практически всё, что вам нужно, чтобы использовать этого бота в ASF, но возможно вы захотите изменить ещё как минимум два параметра: {0} и {1}. Если вы хотите продолжить обучение - пожалуйста сделайте это. Помните, что можно сверяться с wiki, если вы не уверены как настраивать конкретный параметр, или если вам нужна дополнительная помощь.</value>
<comment>{0} will be replaced by "SteamLogin" configuration property, {1} will be replaced by "SteamPassword" configuration property</comment>
</data>
<data name="TutorialBotFormReady" xml:space="preserve">

View File

@@ -0,0 +1,154 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" id="root">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace"/>
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0"/>
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string"/>
<xsd:attribute name="type" type="xsd:string"/>
<xsd:attribute name="mimetype" type="xsd:string"/>
<xsd:attribute ref="xml:space"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string"/>
<xsd:attribute name="name" type="xsd:string"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1"/>
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2"/>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1"/>
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3"/>
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4"/>
<xsd:attribute ref="xml:space"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1"/>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required"/>
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>

View File

@@ -118,7 +118,7 @@
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="CategoryAccess" xml:space="preserve">
<value>Erişim İzni</value>
<value>Erişim</value>
</data>
<data name="CategoryAdvanced" xml:space="preserve">
<value>Gelişmiş</value>
@@ -139,7 +139,7 @@
<value>Bu yapılandırmayı kaldırmak istiyor musunuz?</value>
</data>
<data name="ErrorBotNameEmpty" xml:space="preserve">
<value>Botun ismi yok!</value>
<value>Botunuzun bir ismi yok!</value>
</data>
<data name="ErrorCantRemoveGlobalConfig" xml:space="preserve">
<value>Genel yapılandırmayı kaldıramazsın!</value>
@@ -170,11 +170,11 @@
<comment>{0} will be replaced by object's name</comment>
</data>
<data name="ErrorVersionMismatch" xml:space="preserve">
<value>ASF için geçersiz ConfigGenerator sürümünü kullanmaya çalıştın!
<value>ASF için geçersiz ConfigGenerator sürümünü kullanmaya çalıştınız!
ASF: {0} | ConfigGenerator: {1}
Lütfen ASF sürümüne uygun ConfigGenerator kullan. İlgili sürüme yönlendiriliyorsun...</value>
Lütfen ASF sürümüne uygun ConfigGenerator kullanın. Uygun olan sürüme yönlendiriliyorsunuz...</value>
<comment>{0} will be replaced by ASF version (string), {1} will be replaced by ConfigGenerator version (string). Please note that this string should include newlines for formatting.</comment>
</data>
<data name="New" xml:space="preserve">
@@ -190,45 +190,45 @@ Lütfen ASF sürümüne uygun ConfigGenerator kullan. İlgili sürüme yönlendi
<comment>This is used as MessageBox title</comment>
</data>
<data name="TutorialBotFormEnabled" xml:space="preserve">
<value>Harika! Artık Bot aktif. Aslında Botu kullanmak için yapman gerkenler bu kadar, belki 2 adet ayar daha yapmak isteyebilirsin: {0} ve {1}. Öğretici ile devam etmek istiyorsan etmelisin. Yapılandırmadan emin değilsen veya yardıma ihtiyacın varsa Wiki sayfasına başvurmaktan çekinme.</value>
<value>Harika! Artık Bot aktif. Aslında Botu kullanmak için yapman gerekenler bu kadar, belki 2 adet ayar daha yapmak isteyebilirsin: {0} ve {1}. Öğretici ile devam etmek istiyorsan etmelisin. Yapılandırmadan emin değilsen veya yardıma ihtiyacın varsa Wiki sayfasına başvurmaktan çekinme.</value>
<comment>{0} will be replaced by "SteamLogin" configuration property, {1} will be replaced by "SteamPassword" configuration property</comment>
</data>
<data name="TutorialBotFormReady" xml:space="preserve">
<value>ASF artık hazır! Herşeyi doğru girdiysen ASF.exe dosyasını çalıştır. ASF artık giriş yapıyor ve kart düşürmeye başlıyor olmalı. SteamGuard yada İki-Aşamalı-Doğrulayıcı etkin ise, ASF bunlar ile ilgili bilgi isteyebilir.</value>
<value>ASF artık hazır! Her şeyi doğru girdiysen ASF.exe dosyasını çalıştır. ASF artık giriş yapıyor ve kart düşürmeye başlıyor olmalı. SteamGuard ya da İki Faktörlü Doğrulama etkin ise ASF bunlar ile ilgili bilgi isteyebilir.</value>
</data>
<data name="TutorialFinished" xml:space="preserve">
<value>Tebrikler! ASF kullanılabilir olması için herşeyi yaptın, buda senin için hazırladığımız öğreticiyi bitiriyor. Artık Wiki sayfasındaki yapılandırma ile alakalı herşeyi okumanı şiddet ile öneriyoruz, çünkü ASF çok güzel seçenekler sunuyor, çevrimdışı kart düşürme veya hesabın için en etkili şekilde ASF kullanman için. Tabiki bunlar şart değil, ve istediğin zaman yapılandırıcıyı kapatabilirsin. Umarım senin için geliştirdiğimiz yazılımı beğenirsin!</value>
<value>Tebrikler! ASF'nin kullanılabilir olması için gerekli olan her şeyi yaptınız. Bu da senin için hazırladığımız öğreticiyi bitiriyoruz demektir. Artık Wiki sayfasındaki yapılandırma ile alakalı her şeyi okumanı şiddet ile öneriyoruz çünkü ASF çevrimdışı kart düşürme veya hesabın için en etkili şekilde kart düşürme gibi çok güzel seçenekler sunuyor, tabii ki bunlar şart değil ve istediğin zaman yapılandırıcıyı kapatabilirsin. Umarım senin için geliştirdiğimiz yazılımı beğenirsin!</value>
</data>
<data name="TutorialMainFormBotsManagementButtons" xml:space="preserve">
<value>Üst pencerede yüklenmiş yapılandırmaları görebilirsin, ve 3 adet ekstra tuşu, bunlar kaldırma [-], yeniden adlandırma [~] ve yenilerini eklemek [+] için var.</value>
<value>Pencerenin en üstünde şu anda yüklenmiş yapılandırmaları görebilirsin. Ayırca kaldırma [-], yeniden adlandırma [~] ve yenilerini eklemek [+] için kullanabileceğin 3 buton bulacaksın.</value>
<comment>If possible, try to keep visual representation of buttons: [-], [~] and [+]</comment>
</data>
<data name="TutorialMainFormConfigurationWiki" xml:space="preserve">
<value>Lütfen tüm yapılandırmaların özellikleri, açıklamalarıyla birlikte amaçları ve kabul edilebilir değerleri GitHub wiki sayfamızda bulunabildiğini unutma. Referans olarak kullanabilirsin.</value>
<value>Lütfen tüm yapılandırmaların özellikleri, açıklamalarıyla birlikte amaçları ve kabul edilebilir değerlerinin GitHub wiki sayfamızda bulunabildiğini unutma. Lütfen bunu bir referans olarak kullanın.</value>
</data>
<data name="TutorialMainFormConfigurationWindow" xml:space="preserve">
<value>Orta pencerede seçili hesabın için yapabileceğin tüm yapılandırmalar mevcut.</value>
<value>Pencerenin orta kısmında, seçili hesabın için yapabileceğin tüm yapılandırmalar mevcuttur.</value>
</data>
<data name="TutorialMainFormFinished" xml:space="preserve">
<value>Tamam, hadi ASF yi yapılandıralım. İlk steam hesabını eklemek için artı [+] tuşuna baş!</value>
<value>Tamam, haydi ASF'yi yapılandırmaya başlayalım. İlk olarak Steam hesabını eklemek için artı [+] butonuna bas!</value>
<comment>If possible, try to keep visual representation of [+] button</comment>
</data>
<data name="TutorialMainFormHelpButton" xml:space="preserve">
<value>Sağ üst köşede yardım [?] tuşunu göreceksin, bu da seni daha fazla bilgi için ASF wiki sayfasına yönlendirecek.</value>
<value>Sağ üst köşede yardım [?] butonunu göreceksin, bu da seni daha fazla bilgi için ASF wiki sayfasına yönlendirecek.</value>
<comment>If possible, try to keep visual representation of [?] button</comment>
</data>
<data name="TutorialMainFormShown" xml:space="preserve">
<value>Bu ana ASF ConfigGenerator ekranı, kullanması gerçekten çok kolay!</value>
</data>
<data name="TutorialNewBotFormFinished" xml:space="preserve">
<value>Gördüğün gibi, Bot yapılandırılmaya hazır! Yapacağın ilk şey, {0} değerini false dan true ya çevirmen, denesene!</value>
<value>Gördüğün gibi, Bot yapılandırılmaya hazır! Yapacağın ilk şey, {0} değerini false'tan true'ya çevirmen, denesene!</value>
<comment>{0} will be replaced by name of the configuration property ("Enabled")</comment>
</data>
<data name="TutorialNewBotFormShown" xml:space="preserve">
<value>Harika iş! Şimdi bot için isim sorulacak. Bu hesap için kullandığın kullanıcı adı iyi bir örnek olacaktır, ya da seçtiğin herhangi bir ad bota erişimini kolaylaştıracaktır.</value>
<value>Harika iş! Şimdi bot için isim sorulacak. Bu hesap için kullandığın kullanıcı adı iyi bir örnek olacaktır ya da seçtiğin herhangi bir isim bota erişimini kolaylaştıracaktır.</value>
</data>
<data name="TutorialStart" xml:space="preserve">
<value>Hoş geldin! ASF ConfigGenerator'ı ilk kez kullanıldığını fark ettim, sana biraz yardım etmeme izin ver.</value>
<value>Hoş geldin! ASF ConfigGenerator'ı ilk kez kullandığını fark ettim, sana biraz yardım etmeme izin ver.</value>
</data>
<data name="UserInputBotName" xml:space="preserve">
<value>Lütfen yeni Bot ismi giriniz: </value>

View File

@@ -166,7 +166,7 @@
<comment>This happens e.g. when user wants to create a bot with reserved name, such as "ASF"</comment>
</data>
<data name="ErrorObjectIsNull" xml:space="preserve">
<value>{0} нульовий!</value>
<value>{0} має значення null!</value>
<comment>{0} will be replaced by object's name</comment>
</data>
<data name="ErrorVersionMismatch" xml:space="preserve">

View File

@@ -1,8 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="Costura.Fody" version="2.0.0-beta0018" targetFramework="net461" developmentDependency="true" />
<package id="Fody" version="1.30.0-beta01" targetFramework="net461" developmentDependency="true" />
<package id="Newtonsoft.Json" version="10.0.1-beta1" targetFramework="net461" />
<package id="Resource.Embedder" version="1.2.2" targetFramework="net461" developmentDependency="true" />
<package id="Costura.Fody" version="2.0.0-beta0018" targetFramework="net461" developmentDependency="true" />
<package id="Fody" version="1.30.0-beta01" targetFramework="net461" developmentDependency="true" />
<package id="GenDictEdit" version="1.1.0" targetFramework="net461" />
<package id="Newtonsoft.Json" version="10.0.1-beta1" targetFramework="net461" />
<package id="Resource.Embedder" version="1.2.2" targetFramework="net461" developmentDependency="true" />
</packages>

View File

@@ -233,6 +233,9 @@
<EmbeddedResource Include="..\ArchiSteamFarm\Localization\Strings.fi-FI.resx">
<Link>Localization\Strings.fi-FI.resx</Link>
</EmbeddedResource>
<EmbeddedResource Include="..\ArchiSteamFarm\Localization\Strings.fr-CH.resx">
<Link>Localization\Strings.fr-CH.resx</Link>
</EmbeddedResource>
<EmbeddedResource Include="..\ArchiSteamFarm\Localization\Strings.fr-FR.resx">
<Link>Localization\Strings.fr-FR.resx</Link>
</EmbeddedResource>
@@ -292,6 +295,9 @@
<EmbeddedResource Include="..\ArchiSteamFarm\Localization\Strings.ru-RU.resx">
<Link>Localization\Strings.ru-RU.resx</Link>
</EmbeddedResource>
<EmbeddedResource Include="..\ArchiSteamFarm\Localization\Strings.sk-SK.resx">
<Link>Localization\Strings.sk-SK.resx</Link>
</EmbeddedResource>
<EmbeddedResource Include="..\ArchiSteamFarm\Localization\Strings.sr-CS.resx">
<Link>Localization\Strings.sr-CS.resx</Link>
</EmbeddedResource>

View File

@@ -1,4 +1,5 @@
using System;
using System.Collections;
using System.Collections.Generic;
using System.Globalization;
using System.IO;
@@ -141,36 +142,45 @@ namespace ArchiSteamFarm {
}
}
ushort defaultResourceSetCount = 0;
ResourceSet defaultResourceSet = Strings.ResourceManager.GetResourceSet(CultureInfo.GetCultureInfo("en-US"), true, true);
if (defaultResourceSet != null) {
defaultResourceSetCount = (ushort) defaultResourceSet.Cast<object>().Count();
}
if (defaultResourceSetCount == 0) {
if (CultureInfo.CurrentCulture.TwoLetterISOLanguageName.Equals("en")) {
return;
}
ushort currentResourceSetCount = 0;
ResourceSet currentResourceSet = Strings.ResourceManager.GetResourceSet(CultureInfo.CurrentCulture, true, false);
if (currentResourceSet != null) {
currentResourceSetCount = (ushort) currentResourceSet.Cast<object>().Count();
ResourceSet defaultResourceSet = Strings.ResourceManager.GetResourceSet(CultureInfo.GetCultureInfo("en-US"), true, true);
if (defaultResourceSet == null) {
ASF.ArchiLogger.LogNullError(nameof(defaultResourceSet));
return;
}
if (currentResourceSetCount < defaultResourceSetCount) {
// We don't want to report "en-AU" as 0.00% only because we don't have it as a dialect, if "en" is available and translated
// This typically will work only for English, as e.g. "nl-BE" doesn't fallback to "nl-NL", but "nl", and "nl" will be empty
ushort neutralResourceSetCount = 0;
ResourceSet neutralResourceSet = Strings.ResourceManager.GetResourceSet(CultureInfo.CurrentCulture.Parent, true, false);
if (neutralResourceSet != null) {
neutralResourceSetCount = (ushort) neutralResourceSet.Cast<object>().Count();
}
HashSet<DictionaryEntry> defaultStringObjects = new HashSet<DictionaryEntry>(defaultResourceSet.Cast<DictionaryEntry>());
if (defaultStringObjects.Count == 0) {
ASF.ArchiLogger.LogNullError(nameof(defaultStringObjects));
return;
}
if (neutralResourceSetCount < defaultResourceSetCount) {
float translationCompleteness = currentResourceSetCount / (float) defaultResourceSetCount;
ASF.ArchiLogger.LogGenericInfo(string.Format(Strings.TranslationIncomplete, CultureInfo.CurrentCulture.Name, translationCompleteness.ToString("P1")));
ResourceSet currentResourceSet = Strings.ResourceManager.GetResourceSet(CultureInfo.CurrentCulture, true, true);
if (currentResourceSet == null) {
ASF.ArchiLogger.LogNullError(nameof(currentResourceSet));
return;
}
HashSet<DictionaryEntry> currentStringObjects = new HashSet<DictionaryEntry>(currentResourceSet.Cast<DictionaryEntry>());
if (currentStringObjects.Count >= defaultStringObjects.Count) {
// Either we have 100% finished translation, or we're missing it entirely and using en-US
HashSet<DictionaryEntry> testStringObjects = new HashSet<DictionaryEntry>(currentStringObjects);
testStringObjects.ExceptWith(defaultStringObjects);
// If we got 0 as final result, this is the missing language
// Otherwise it's just a small amount of strings that happen to be the same
if (testStringObjects.Count == 0) {
currentStringObjects = testStringObjects;
}
}
if (currentStringObjects.Count < defaultStringObjects.Count) {
float translationCompleteness = currentStringObjects.Count / (float) defaultStringObjects.Count;
ASF.ArchiLogger.LogGenericInfo(string.Format(Strings.TranslationIncomplete, CultureInfo.CurrentCulture.Name, translationCompleteness.ToString("P1")));
}
}
private static async Task InitGlobalDatabaseAndServices() {
@@ -191,7 +201,7 @@ namespace ArchiSteamFarm {
}
ArchiWebHandler.Init();
OS.Init();
OS.Init(GlobalConfig.Headless);
WebBrowser.Init();
WebBrowser = new WebBrowser(ASF.ArchiLogger);

View File

@@ -1,8 +1,8 @@
ArchiSteamFarm
===================
[![Build Status (Windows)](https://img.shields.io/appveyor/ci/JustArchi/ArchiSteamFarm.svg?label=Windows&maxAge=60)](https://ci.appveyor.com/project/JustArchi/ArchiSteamFarm)
[![Build Status (Mono)](https://img.shields.io/travis/JustArchi/ArchiSteamFarm.svg?label=Mono&maxAge=60)](https://travis-ci.org/JustArchi/ArchiSteamFarm)
[![Build Status (Windows)](https://img.shields.io/appveyor/ci/JustArchi/ArchiSteamFarm/master.svg?label=Windows&maxAge=60)](https://ci.appveyor.com/project/JustArchi/ArchiSteamFarm)
[![Build Status (Mono)](https://img.shields.io/travis/JustArchi/ArchiSteamFarm/master.svg?label=Mono&maxAge=60)](https://travis-ci.org/JustArchi/ArchiSteamFarm)
[![License](https://img.shields.io/github/license/JustArchi/ArchiSteamFarm.svg?label=License&maxAge=86400)](./LICENSE-2.0.txt)
[![GitHub Release](https://img.shields.io/github/release/JustArchi/ArchiSteamFarm.svg?label=Latest&maxAge=60)](https://github.com/JustArchi/ArchiSteamFarm/releases/latest)
[![Github Downloads](https://img.shields.io/github/downloads/JustArchi/ArchiSteamFarm/latest/total.svg?label=Downloads&maxAge=60)](https://github.com/JustArchi/ArchiSteamFarm/releases/latest)
@@ -13,7 +13,7 @@ ArchiSteamFarm
[![Bitcoin Donate](https://img.shields.io/badge/Bitcoin-donate-yellow.svg)](https://blockchain.info/address/1Archi6M1r5b41Rvn1SY2FfJAzsrEUT7aT)
[![Steam Donate](https://img.shields.io/badge/Steam-donate-yellow.svg)](https://steamcommunity.com/tradeoffer/new/?partner=46697991&token=0ix2Ruv_)
[![Gitter](https://img.shields.io/gitter/room/JustArchi/ArchiSteamFarm.svg?label=Chat&maxAge=60)](https://gitter.im/JustArchi/ArchiSteamFarm)
[![Gitter](https://img.shields.io/gitter/room/JustArchi/ArchiSteamFarm.svg?label=Chat&maxAge=86400)](https://gitter.im/JustArchi/ArchiSteamFarm)
[![Steam Group](https://img.shields.io/badge/Steam-group-yellowgreen.svg)](https://steamcommunity.com/groups/ascfarm)
[![Discord](https://img.shields.io/badge/Discord-join-blue.svg)](https://discord.gg/HStsVSB)

View File

@@ -5,7 +5,7 @@ branches:
only:
- master
skip_branch_with_pr: true
image: Visual Studio 2015
image: Visual Studio 2017
configuration: Release
platform: Any CPU
clone_depth: 10

View File

@@ -52,7 +52,7 @@ VERSION_LESS_EQUAL_THAN() {
echo "INFO: Mono environment setup executed!"
MINIMUM_MONO_VERSION="4.6.0" # Bump as needed
CURRENT_MONO_VERSION="$(mono -V | head -n 1 | cut -d ' ' -f 5)"
CURRENT_MONO_VERSION="$(mono -V | head -n 1 | cut -d ' ' -f 5 | cut -d '.' -f '1-3')" # We take only first three version numbers, this is needed for facades path in OS X
echo "INFO: Mono version: $CURRENT_MONO_VERSION | Required: ${MINIMUM_MONO_VERSION}+"
@@ -71,9 +71,10 @@ else
echo "INFO: Skipping setting of MONO_ENV_OPTIONS as it's already declared with value: $MONO_ENV_OPTIONS"
fi
MONO_FACADES=""
if [ -d "/usr/lib/mono/4.5/Facades" ]; then
export MONO_FACADES="/usr/lib/mono/4.5/Facades"
elif [ -d "/Library/Frameworks/Mono.framework/Versions/${CURRENT_MONO_VERSION}/lib/mono/4.5/Facades" ]; then
export MONO_FACADES="/Library/Frameworks/Mono.framework/Versions/${CURRENT_MONO_VERSION}/lib/mono/4.5/Facades"
else
echo "WARN: Could not find Mono facades!"
fi

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -1,2 +1,2 @@
@echo off
IF "%CROWDIN_HOME%"=="" (ECHO crowdin is NOT defined) ELSE (java -jar %CROWDIN_HOME%\crowdin-cli.jar %*)
IF "%CROWDIN_HOME%"=="" (ECHO crowdin is NOT defined) ELSE (java -jar "%CROWDIN_HOME%\crowdin-cli.jar" %*)