thingsboard-aplcache
Changes
application/src/main/java/org/thingsboard/server/actors/shared/rulechain/RuleChainManager.java 2(+1 -1)
common/transport/coap/src/main/java/org/thingsboard/server/transport/coap/CoapTransportResource.java 12(+0 -12)
common/transport/coap/src/main/java/org/thingsboard/server/transport/coap/CoapTransportService.java 2(+0 -2)
common/transport/http/src/main/java/org/thingsboard/server/transport/http/DeviceApiController.java 31(+0 -31)
common/transport/mqtt/src/main/java/org/thingsboard/server/transport/mqtt/MqttTransportContext.java 1(+0 -1)
common/transport/mqtt/src/main/java/org/thingsboard/server/transport/mqtt/MqttTransportHandler.java 10(+0 -10)
common/transport/transport-api/src/main/java/org/thingsboard/server/common/transport/quota/AbstractQuotaService.java 67(+0 -67)
common/transport/transport-api/src/main/java/org/thingsboard/server/common/transport/quota/Clock.java 45(+0 -45)
common/transport/transport-api/src/main/java/org/thingsboard/server/common/transport/quota/host/HostIntervalRegistryCleaner.java 29(+0 -29)
common/transport/transport-api/src/main/java/org/thingsboard/server/common/transport/quota/host/HostIntervalRegistryLogger.java 52(+0 -52)
common/transport/transport-api/src/main/java/org/thingsboard/server/common/transport/quota/host/HostRequestIntervalRegistry.java 37(+0 -37)
common/transport/transport-api/src/main/java/org/thingsboard/server/common/transport/quota/host/HostRequestLimitPolicy.java 33(+0 -33)
common/transport/transport-api/src/main/java/org/thingsboard/server/common/transport/quota/host/HostRequestsQuotaService.java 37(+0 -37)
common/transport/transport-api/src/main/java/org/thingsboard/server/common/transport/quota/inmemory/IntervalCount.java 68(+0 -68)
common/transport/transport-api/src/main/java/org/thingsboard/server/common/transport/quota/inmemory/IntervalRegistryCleaner.java 62(+0 -62)
common/transport/transport-api/src/main/java/org/thingsboard/server/common/transport/quota/inmemory/IntervalRegistryLogger.java 79(+0 -79)
common/transport/transport-api/src/main/java/org/thingsboard/server/common/transport/quota/inmemory/KeyBasedIntervalRegistry.java 73(+0 -73)
common/transport/transport-api/src/main/java/org/thingsboard/server/common/transport/quota/QuotaService.java 25(+0 -25)
common/transport/transport-api/src/main/java/org/thingsboard/server/common/transport/quota/RequestLimitPolicy.java 30(+0 -30)
common/transport/transport-api/src/main/java/org/thingsboard/server/common/transport/quota/tenant/TenantIntervalRegistryCleaner.java 31(+0 -31)
common/transport/transport-api/src/main/java/org/thingsboard/server/common/transport/quota/tenant/TenantIntervalRegistryLogger.java 54(+0 -54)
common/transport/transport-api/src/main/java/org/thingsboard/server/common/transport/quota/tenant/TenantMsgsIntervalRegistry.java 33(+0 -33)
common/transport/transport-api/src/main/java/org/thingsboard/server/common/transport/quota/tenant/TenantQuotaService.java 32(+0 -32)
common/transport/transport-api/src/main/java/org/thingsboard/server/common/transport/quota/tenant/TenantRequestLimitPolicy.java 30(+0 -30)
common/transport/transport-api/src/main/java/org/thingsboard/server/common/transport/TransportContext.java 4(+0 -4)
common/transport/transport-api/src/test/java/org/thingsboard/server/common/transport/quota/ClockTest.java 66(+0 -66)
common/transport/transport-api/src/test/java/org/thingsboard/server/common/transport/quota/HostRequestLimitPolicyTest.java 47(+0 -47)
common/transport/transport-api/src/test/java/org/thingsboard/server/common/transport/quota/HostRequestsQuotaServiceTest.java 78(+0 -78)
common/transport/transport-api/src/test/java/org/thingsboard/server/common/transport/quota/inmemory/HostRequestIntervalRegistryTest.java 83(+0 -83)
common/transport/transport-api/src/test/java/org/thingsboard/server/common/transport/quota/inmemory/IntervalCountTest.java 65(+0 -65)
common/transport/transport-api/src/test/java/org/thingsboard/server/common/transport/quota/inmemory/IntervalRegistryLoggerTest.java 63(+0 -63)
msa/docker/.env 2(+1 -1)
msa/docker/docker-compose.yml 1(+1 -0)
pom.xml 2(+1 -1)
ui/src/app/api/datasource.service.js 18(+15 -3)
ui/src/app/locale/locale.constant-TR.json 2344(+1172 -1172)
Details
diff --git a/application/src/main/java/org/thingsboard/server/actors/shared/rulechain/RuleChainManager.java b/application/src/main/java/org/thingsboard/server/actors/shared/rulechain/RuleChainManager.java
index 11ed5a3..d349fec 100644
--- a/application/src/main/java/org/thingsboard/server/actors/shared/rulechain/RuleChainManager.java
+++ b/application/src/main/java/org/thingsboard/server/actors/shared/rulechain/RuleChainManager.java
@@ -50,7 +50,7 @@ public abstract class RuleChainManager extends EntityActorsManager<RuleChainId,
@Override
public void visit(RuleChain entity, ActorRef actorRef) {
- if (entity.isRoot()) {
+ if (entity != null && entity.isRoot()) {
rootChain = entity;
rootChainActor = actorRef;
}
diff --git a/application/src/main/resources/thingsboard.yml b/application/src/main/resources/thingsboard.yml
index 8d65e3d..6cb3621 100644
--- a/application/src/main/resources/thingsboard.yml
+++ b/application/src/main/resources/thingsboard.yml
@@ -82,46 +82,6 @@ dashboard:
# Maximum allowed datapoints fetched by widgets
max_datapoints_limit: "${DASHBOARD_MAX_DATAPOINTS_LIMIT:50000}"
-#Quota parameters
-quota:
- host:
- # Max allowed number of API requests in interval for single host
- limit: "${QUOTA_HOST_LIMIT:10000}"
- # Interval duration
- intervalMs: "${QUOTA_HOST_INTERVAL_MS:60000}"
- # Maximum silence duration for host after which Host removed from QuotaService. Must be bigger than intervalMs
- ttlMs: "${QUOTA_HOST_TTL_MS:60000}"
- # Interval for scheduled task that cleans expired records. TTL is used for expiring
- cleanPeriodMs: "${QUOTA_HOST_CLEAN_PERIOD_MS:300000}"
- # Enable Host API Limits
- enabled: "${QUOTA_HOST_ENABLED:false}"
- # Array of whitelist hosts
- whitelist: "${QUOTA_HOST_WHITELIST:localhost,127.0.0.1}"
- # Array of blacklist hosts
- blacklist: "${QUOTA_HOST_BLACKLIST:}"
- log:
- topSize: "${QUOTA_HOST_LOG_TOP_SIZE:10}"
- intervalMin: "${QUOTA_HOST_LOG_INTERVAL_MIN:2}"
- rule:
- tenant:
- # Max allowed number of API requests in interval for single tenant
- limit: "${QUOTA_TENANT_LIMIT:100000}"
- # Interval duration
- intervalMs: "${QUOTA_TENANT_INTERVAL_MS:60000}"
- # Maximum silence duration for tenant after which Tenant removed from QuotaService. Must be bigger than intervalMs
- ttlMs: "${QUOTA_TENANT_TTL_MS:60000}"
- # Interval for scheduled task that cleans expired records. TTL is used for expiring
- cleanPeriodMs: "${QUOTA_TENANT_CLEAN_PERIOD_MS:300000}"
- # Enable Host API Limits
- enabled: "${QUOTA_TENANT_ENABLED:true}"
- # Array of whitelist tenants
- whitelist: "${QUOTA_TENANT_WHITELIST:}"
- # Array of blacklist tenants
- blacklist: "${QUOTA_HOST_TENANT_BLACKLIST:}"
- log:
- topSize: "${QUOTA_TENANT_LOG_TOP_SIZE:10}"
- intervalMin: "${QUOTA_TENANT_LOG_INTERVAL_MIN:2}"
-
database:
entities:
type: "${DATABASE_ENTITIES_TYPE:sql}" # cassandra OR sql
@@ -432,6 +392,10 @@ transport:
auto_commit_interval: "${TB_RULE_ENGINE_AUTO_COMMIT_INTERVAL_MS:100}"
notifications:
topic: "${TB_TRANSPORT_NOTIFICATIONS_TOPIC:tb.transport.notifications}"
+ rate_limits:
+ enabled: "${TB_TRANSPORT_RATE_LIMITS_ENABLED:false}"
+ tenant: "${TB_TRANSPORT_RATE_LIMITS_TENANT:1000:1,20000:60}"
+ device: "${TB_TRANSPORT_RATE_LIMITS_DEVICE:10:1,300:60}"
# Local HTTP transport parameters
http:
enabled: "${HTTP_ENABLED:true}"
diff --git a/common/transport/coap/src/main/java/org/thingsboard/server/transport/coap/CoapTransportResource.java b/common/transport/coap/src/main/java/org/thingsboard/server/transport/coap/CoapTransportResource.java
index 0e2a794..9cf36e3 100644
--- a/common/transport/coap/src/main/java/org/thingsboard/server/transport/coap/CoapTransportResource.java
+++ b/common/transport/coap/src/main/java/org/thingsboard/server/transport/coap/CoapTransportResource.java
@@ -72,12 +72,6 @@ public class CoapTransportResource extends CoapResource {
@Override
public void handleGET(CoapExchange exchange) {
- if (transportContext.getQuotaService().isQuotaExceeded(exchange.getSourceAddress().getHostAddress())) {
- log.warn("CoAP Quota exceeded for [{}:{}] . Disconnect", exchange.getSourceAddress().getHostAddress(), exchange.getSourcePort());
- exchange.respond(ResponseCode.BAD_REQUEST);
- return;
- }
-
Optional<FeatureType> featureType = getFeatureType(exchange.advanced().getRequest());
if (!featureType.isPresent()) {
log.trace("Missing feature type parameter");
@@ -108,12 +102,6 @@ public class CoapTransportResource extends CoapResource {
@Override
public void handlePOST(CoapExchange exchange) {
- if (transportContext.getQuotaService().isQuotaExceeded(exchange.getSourceAddress().getHostAddress())) {
- log.warn("CoAP Quota exceeded for [{}:{}] . Disconnect", exchange.getSourceAddress().getHostAddress(), exchange.getSourcePort());
- exchange.respond(ResponseCode.BAD_REQUEST);
- return;
- }
-
Optional<FeatureType> featureType = getFeatureType(exchange.advanced().getRequest());
if (!featureType.isPresent()) {
log.trace("Missing feature type parameter");
diff --git a/common/transport/coap/src/main/java/org/thingsboard/server/transport/coap/CoapTransportService.java b/common/transport/coap/src/main/java/org/thingsboard/server/transport/coap/CoapTransportService.java
index 278ca6d..c0bd7f9 100644
--- a/common/transport/coap/src/main/java/org/thingsboard/server/transport/coap/CoapTransportService.java
+++ b/common/transport/coap/src/main/java/org/thingsboard/server/transport/coap/CoapTransportService.java
@@ -27,8 +27,6 @@ import org.springframework.context.ApplicationContext;
import org.springframework.stereotype.Service;
import org.thingsboard.server.common.transport.SessionMsgProcessor;
import org.thingsboard.server.common.transport.auth.DeviceAuthService;
-import org.thingsboard.server.common.transport.quota.QuotaService;
-import org.thingsboard.server.common.transport.quota.host.HostRequestsQuotaService;
import org.thingsboard.server.transport.coap.adaptors.CoapTransportAdaptor;
import javax.annotation.PostConstruct;
diff --git a/common/transport/http/src/main/java/org/thingsboard/server/transport/http/DeviceApiController.java b/common/transport/http/src/main/java/org/thingsboard/server/transport/http/DeviceApiController.java
index b40fbc1..18458d1 100644
--- a/common/transport/http/src/main/java/org/thingsboard/server/transport/http/DeviceApiController.java
+++ b/common/transport/http/src/main/java/org/thingsboard/server/transport/http/DeviceApiController.java
@@ -75,9 +75,6 @@ public class DeviceApiController {
@RequestParam(value = "sharedKeys", required = false, defaultValue = "") String sharedKeys,
HttpServletRequest httpRequest) {
DeferredResult<ResponseEntity> responseWriter = new DeferredResult<>();
- if (quotaExceeded(httpRequest, responseWriter)) {
- return responseWriter;
- }
transportContext.getTransportService().process(ValidateDeviceTokenRequestMsg.newBuilder().setToken(deviceToken).build(),
new DeviceAuthCallback(transportContext, responseWriter, sessionInfo -> {
GetAttributeRequestMsg.Builder request = GetAttributeRequestMsg.newBuilder().setRequestId(0);
@@ -100,9 +97,6 @@ public class DeviceApiController {
public DeferredResult<ResponseEntity> postDeviceAttributes(@PathVariable("deviceToken") String deviceToken,
@RequestBody String json, HttpServletRequest request) {
DeferredResult<ResponseEntity> responseWriter = new DeferredResult<>();
- if (quotaExceeded(request, responseWriter)) {
- return responseWriter;
- }
transportContext.getTransportService().process(ValidateDeviceTokenRequestMsg.newBuilder().setToken(deviceToken).build(),
new DeviceAuthCallback(transportContext, responseWriter, sessionInfo -> {
TransportService transportService = transportContext.getTransportService();
@@ -116,9 +110,6 @@ public class DeviceApiController {
public DeferredResult<ResponseEntity> postTelemetry(@PathVariable("deviceToken") String deviceToken,
@RequestBody String json, HttpServletRequest request) {
DeferredResult<ResponseEntity> responseWriter = new DeferredResult<ResponseEntity>();
- if (quotaExceeded(request, responseWriter)) {
- return responseWriter;
- }
transportContext.getTransportService().process(ValidateDeviceTokenRequestMsg.newBuilder().setToken(deviceToken).build(),
new DeviceAuthCallback(transportContext, responseWriter, sessionInfo -> {
TransportService transportService = transportContext.getTransportService();
@@ -133,9 +124,6 @@ public class DeviceApiController {
@RequestParam(value = "timeout", required = false, defaultValue = "0") long timeout,
HttpServletRequest httpRequest) {
DeferredResult<ResponseEntity> responseWriter = new DeferredResult<>();
- if (quotaExceeded(httpRequest, responseWriter)) {
- return responseWriter;
- }
transportContext.getTransportService().process(ValidateDeviceTokenRequestMsg.newBuilder().setToken(deviceToken).build(),
new DeviceAuthCallback(transportContext, responseWriter, sessionInfo -> {
TransportService transportService = transportContext.getTransportService();
@@ -153,9 +141,6 @@ public class DeviceApiController {
@PathVariable("requestId") Integer requestId,
@RequestBody String json, HttpServletRequest request) {
DeferredResult<ResponseEntity> responseWriter = new DeferredResult<ResponseEntity>();
- if (quotaExceeded(request, responseWriter)) {
- return responseWriter;
- }
transportContext.getTransportService().process(ValidateDeviceTokenRequestMsg.newBuilder().setToken(deviceToken).build(),
new DeviceAuthCallback(transportContext, responseWriter, sessionInfo -> {
TransportService transportService = transportContext.getTransportService();
@@ -168,9 +153,6 @@ public class DeviceApiController {
public DeferredResult<ResponseEntity> postRpcRequest(@PathVariable("deviceToken") String deviceToken,
@RequestBody String json, HttpServletRequest httpRequest) {
DeferredResult<ResponseEntity> responseWriter = new DeferredResult<ResponseEntity>();
- if (quotaExceeded(httpRequest, responseWriter)) {
- return responseWriter;
- }
transportContext.getTransportService().process(ValidateDeviceTokenRequestMsg.newBuilder().setToken(deviceToken).build(),
new DeviceAuthCallback(transportContext, responseWriter, sessionInfo -> {
JsonObject request = new JsonParser().parse(json).getAsJsonObject();
@@ -189,9 +171,6 @@ public class DeviceApiController {
@RequestParam(value = "timeout", required = false, defaultValue = "0") long timeout,
HttpServletRequest httpRequest) {
DeferredResult<ResponseEntity> responseWriter = new DeferredResult<>();
- if (quotaExceeded(httpRequest, responseWriter)) {
- return responseWriter;
- }
transportContext.getTransportService().process(ValidateDeviceTokenRequestMsg.newBuilder().setToken(deviceToken).build(),
new DeviceAuthCallback(transportContext, responseWriter, sessionInfo -> {
TransportService transportService = transportContext.getTransportService();
@@ -204,16 +183,6 @@ public class DeviceApiController {
return responseWriter;
}
- private boolean quotaExceeded(HttpServletRequest request, DeferredResult<ResponseEntity> responseWriter) {
- if (transportContext.getQuotaService().isQuotaExceeded(request.getRemoteAddr())) {
- log.warn("REST Quota exceeded for [{}] . Disconnect", request.getRemoteAddr());
- responseWriter.setResult(new ResponseEntity<>(HttpStatus.BANDWIDTH_LIMIT_EXCEEDED));
- return true;
- } else {
- return false;
- }
- }
-
private static class DeviceAuthCallback implements TransportServiceCallback<ValidateDeviceCredentialsResponseMsg> {
private final TransportContext transportContext;
private final DeferredResult<ResponseEntity> responseWriter;
diff --git a/common/transport/mqtt/src/main/java/org/thingsboard/server/transport/mqtt/MqttTransportContext.java b/common/transport/mqtt/src/main/java/org/thingsboard/server/transport/mqtt/MqttTransportContext.java
index 538daa1..184ac49 100644
--- a/common/transport/mqtt/src/main/java/org/thingsboard/server/transport/mqtt/MqttTransportContext.java
+++ b/common/transport/mqtt/src/main/java/org/thingsboard/server/transport/mqtt/MqttTransportContext.java
@@ -28,7 +28,6 @@ import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.stereotype.Component;
import org.thingsboard.server.common.transport.TransportContext;
import org.thingsboard.server.common.transport.TransportService;
-import org.thingsboard.server.common.transport.quota.host.HostRequestsQuotaService;
import org.thingsboard.server.kafka.TbNodeIdProvider;
import org.thingsboard.server.transport.mqtt.adaptors.MqttTransportAdaptor;
diff --git a/common/transport/mqtt/src/main/java/org/thingsboard/server/transport/mqtt/MqttTransportHandler.java b/common/transport/mqtt/src/main/java/org/thingsboard/server/transport/mqtt/MqttTransportHandler.java
index 46a890f..da8b3a6 100644
--- a/common/transport/mqtt/src/main/java/org/thingsboard/server/transport/mqtt/MqttTransportHandler.java
+++ b/common/transport/mqtt/src/main/java/org/thingsboard/server/transport/mqtt/MqttTransportHandler.java
@@ -42,7 +42,6 @@ import org.thingsboard.server.common.transport.SessionMsgListener;
import org.thingsboard.server.common.transport.TransportService;
import org.thingsboard.server.common.transport.TransportServiceCallback;
import org.thingsboard.server.common.transport.adaptor.AdaptorException;
-import org.thingsboard.server.common.transport.quota.QuotaService;
import org.thingsboard.server.common.msg.EncryptionUtil;
import org.thingsboard.server.gen.transport.TransportProtos;
import org.thingsboard.server.gen.transport.TransportProtos.DeviceInfoProto;
@@ -92,7 +91,6 @@ public class MqttTransportHandler extends ChannelInboundHandlerAdapter implement
private final MqttTransportContext context;
private final MqttTransportAdaptor adaptor;
private final TransportService transportService;
- private final QuotaService quotaService;
private final SslHandler sslHandler;
private final ConcurrentMap<MqttTopicMatcher, Integer> mqttQoSMap;
@@ -106,7 +104,6 @@ public class MqttTransportHandler extends ChannelInboundHandlerAdapter implement
this.context = context;
this.transportService = context.getTransportService();
this.adaptor = context.getAdaptor();
- this.quotaService = context.getQuotaService();
this.sslHandler = context.getSslHandler();
this.mqttQoSMap = new ConcurrentHashMap<>();
this.deviceSessionCtx = new DeviceSessionCtx(sessionId, mqttQoSMap);
@@ -129,13 +126,6 @@ public class MqttTransportHandler extends ChannelInboundHandlerAdapter implement
processDisconnect(ctx);
return;
}
-
- if (quotaService.isQuotaExceeded(address.getHostName())) {
- log.warn("MQTT Quota exceeded for [{}:{}] . Disconnect", address.getHostName(), address.getPort());
- processDisconnect(ctx);
- return;
- }
-
deviceSessionCtx.setChannel(ctx);
switch (msg.fixedHeader().messageType()) {
case CONNECT:
diff --git a/common/transport/transport-api/src/main/java/org/thingsboard/server/common/transport/TransportContext.java b/common/transport/transport-api/src/main/java/org/thingsboard/server/common/transport/TransportContext.java
index ab42982..58aaa78 100644
--- a/common/transport/transport-api/src/main/java/org/thingsboard/server/common/transport/TransportContext.java
+++ b/common/transport/transport-api/src/main/java/org/thingsboard/server/common/transport/TransportContext.java
@@ -20,7 +20,6 @@ import lombok.Data;
import lombok.Getter;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
-import org.thingsboard.server.common.transport.quota.host.HostRequestsQuotaService;
import org.thingsboard.server.kafka.TbNodeIdProvider;
import javax.annotation.PostConstruct;
@@ -43,9 +42,6 @@ public class TransportContext {
@Autowired
private TbNodeIdProvider nodeIdProvider;
- @Autowired(required = false)
- private HostRequestsQuotaService quotaService;
-
@Getter
private ExecutorService executor;
diff --git a/dao/src/main/java/org/thingsboard/server/dao/device/DeviceCredentialsServiceImpl.java b/dao/src/main/java/org/thingsboard/server/dao/device/DeviceCredentialsServiceImpl.java
index 4b25f2b..101bff2 100644
--- a/dao/src/main/java/org/thingsboard/server/dao/device/DeviceCredentialsServiceImpl.java
+++ b/dao/src/main/java/org/thingsboard/server/dao/device/DeviceCredentialsServiceImpl.java
@@ -62,15 +62,15 @@ public class DeviceCredentialsServiceImpl implements DeviceCredentialsService {
@Override
@CacheEvict(cacheNames = DEVICE_CREDENTIALS_CACHE, keyGenerator="previousDeviceCredentialsId", beforeInvocation = true)
public DeviceCredentials updateDeviceCredentials(DeviceCredentials deviceCredentials) {
- return saveOrUpdare(deviceCredentials);
+ return saveOrUpdate(deviceCredentials);
}
@Override
public DeviceCredentials createDeviceCredentials(DeviceCredentials deviceCredentials) {
- return saveOrUpdare(deviceCredentials);
+ return saveOrUpdate(deviceCredentials);
}
- private DeviceCredentials saveOrUpdare(DeviceCredentials deviceCredentials) {
+ private DeviceCredentials saveOrUpdate(DeviceCredentials deviceCredentials) {
if (deviceCredentials.getCredentialsType() == DeviceCredentialsType.X509_CERTIFICATE) {
formatCertData(deviceCredentials);
}
msa/docker/.env 2(+1 -1)
diff --git a/msa/docker/.env b/msa/docker/.env
index 3d8faeb..afcd91c 100644
--- a/msa/docker/.env
+++ b/msa/docker/.env
@@ -10,4 +10,4 @@ COAP_TRANSPORT_DOCKER_NAME=tb-coap-transport
TB_VERSION=2.2.0-SNAPSHOT
-KAFKA_TOPICS=js.eval.requests:100:1:delete --config=retention.ms=60000 --config=retention.bytes=1073741824,tb.transport.api.requests:30:1:delete --config=retention.ms=60000 --config=retention.bytes=1073741824,tb.rule-engine:30:1
+KAFKA_TOPICS=js.eval.requests:100:1:delete --config=retention.ms=60000 --config=segment.bytes=26214400 --config=retention.bytes=104857600,tb.transport.api.requests:30:1:delete --config=retention.ms=60000 --config=segment.bytes=26214400 --config=retention.bytes=104857600,tb.rule-engine:30:1
msa/docker/docker-compose.yml 1(+1 -0)
diff --git a/msa/docker/docker-compose.yml b/msa/docker/docker-compose.yml
index e3b56ae..5410533 100644
--- a/msa/docker/docker-compose.yml
+++ b/msa/docker/docker-compose.yml
@@ -37,6 +37,7 @@ services:
KAFKA_CREATE_TOPICS: "${KAFKA_TOPICS}"
KAFKA_AUTO_CREATE_TOPICS_ENABLE: 'false'
KAFKA_LOG_RETENTION_BYTES: 1073741824
+ KAFKA_LOG_SEGMENT_BYTES: 268435456
KAFKA_LOG_RETENTION_MS: 300000
KAFKA_LOG_CLEANUP_POLICY: delete
depends_on:
pom.xml 2(+1 -1)
diff --git a/pom.xml b/pom.xml
index 387e0ed..00c9c28 100755
--- a/pom.xml
+++ b/pom.xml
@@ -66,7 +66,7 @@
<paho.client.version>1.1.0</paho.client.version>
<netty.version>4.1.22.Final</netty.version>
<os-maven-plugin.version>1.5.0</os-maven-plugin.version>
- <rabbitmq.version>3.6.5</rabbitmq.version>
+ <rabbitmq.version>4.8.0</rabbitmq.version>
<surfire.version>2.19.1</surfire.version>
<jar-plugin.version>3.0.2</jar-plugin.version>
<springfox-swagger.version>2.6.1</springfox-swagger.version>
diff --git a/transport/coap/src/main/resources/tb-coap-transport.yml b/transport/coap/src/main/resources/tb-coap-transport.yml
index 1790d82..30351b0 100644
--- a/transport/coap/src/main/resources/tb-coap-transport.yml
+++ b/transport/coap/src/main/resources/tb-coap-transport.yml
@@ -23,27 +23,10 @@ transport:
bind_address: "${COAP_BIND_ADDRESS:0.0.0.0}"
bind_port: "${COAP_BIND_PORT:5683}"
timeout: "${COAP_TIMEOUT:10000}"
-
-#Quota parameters
-quota:
- host:
- # Max allowed number of API requests in interval for single host
- limit: "${QUOTA_HOST_LIMIT:10000}"
- # Interval duration
- intervalMs: "${QUOTA_HOST_INTERVAL_MS:60000}"
- # Maximum silence duration for host after which Host removed from QuotaService. Must be bigger than intervalMs
- ttlMs: "${QUOTA_HOST_TTL_MS:60000}"
- # Interval for scheduled task that cleans expired records. TTL is used for expiring
- cleanPeriodMs: "${QUOTA_HOST_CLEAN_PERIOD_MS:300000}"
- # Enable Host API Limits
- enabled: "${QUOTA_HOST_ENABLED:true}"
- # Array of whitelist hosts
- whitelist: "${QUOTA_HOST_WHITELIST:localhost,127.0.0.1}"
- # Array of blacklist hosts
- blacklist: "${QUOTA_HOST_BLACKLIST:}"
- log:
- topSize: 10
- intervalMin: 2
+ rate_limits:
+ enabled: "${TB_TRANSPORT_RATE_LIMITS_ENABLED:false}"
+ tenant: "${TB_TRANSPORT_RATE_LIMITS_TENANT:1000:1,20000:60}"
+ device: "${TB_TRANSPORT_RATE_LIMITS_DEVICE:10:1,300:60}"
kafka:
enabled: true
diff --git a/transport/http/src/main/resources/tb-http-transport.yml b/transport/http/src/main/resources/tb-http-transport.yml
index 65a1ad9..001e08a 100644
--- a/transport/http/src/main/resources/tb-http-transport.yml
+++ b/transport/http/src/main/resources/tb-http-transport.yml
@@ -24,27 +24,10 @@ server:
transport:
http:
request_timeout: "${HTTP_REQUEST_TIMEOUT:60000}"
-
-#Quota parameters
-quota:
- host:
- # Max allowed number of API requests in interval for single host
- limit: "${QUOTA_HOST_LIMIT:10000}"
- # Interval duration
- intervalMs: "${QUOTA_HOST_INTERVAL_MS:60000}"
- # Maximum silence duration for host after which Host removed from QuotaService. Must be bigger than intervalMs
- ttlMs: "${QUOTA_HOST_TTL_MS:60000}"
- # Interval for scheduled task that cleans expired records. TTL is used for expiring
- cleanPeriodMs: "${QUOTA_HOST_CLEAN_PERIOD_MS:300000}"
- # Enable Host API Limits
- enabled: "${QUOTA_HOST_ENABLED:true}"
- # Array of whitelist hosts
- whitelist: "${QUOTA_HOST_WHITELIST:localhost,127.0.0.1}"
- # Array of blacklist hosts
- blacklist: "${QUOTA_HOST_BLACKLIST:}"
- log:
- topSize: 10
- intervalMin: 2
+ rate_limits:
+ enabled: "${TB_TRANSPORT_RATE_LIMITS_ENABLED:false}"
+ tenant: "${TB_TRANSPORT_RATE_LIMITS_TENANT:1000:1,20000:60}"
+ device: "${TB_TRANSPORT_RATE_LIMITS_DEVICE:10:1,300:60}"
kafka:
enabled: true
diff --git a/transport/mqtt/src/main/resources/tb-mqtt-transport.yml b/transport/mqtt/src/main/resources/tb-mqtt-transport.yml
index a0e86bb..e37d14e 100644
--- a/transport/mqtt/src/main/resources/tb-mqtt-transport.yml
+++ b/transport/mqtt/src/main/resources/tb-mqtt-transport.yml
@@ -51,27 +51,6 @@ transport:
tenant: "${TB_TRANSPORT_RATE_LIMITS_TENANT:1000:1,20000:60}"
device: "${TB_TRANSPORT_RATE_LIMITS_DEVICE:10:1,300:60}"
-#Quota parameters
-quota:
- host:
- # Max allowed number of API requests in interval for single host
- limit: "${QUOTA_HOST_LIMIT:10000}"
- # Interval duration
- intervalMs: "${QUOTA_HOST_INTERVAL_MS:60000}"
- # Maximum silence duration for host after which Host removed from QuotaService. Must be bigger than intervalMs
- ttlMs: "${QUOTA_HOST_TTL_MS:60000}"
- # Interval for scheduled task that cleans expired records. TTL is used for expiring
- cleanPeriodMs: "${QUOTA_HOST_CLEAN_PERIOD_MS:300000}"
- # Enable Host API Limits
- enabled: "${QUOTA_HOST_ENABLED:true}"
- # Array of whitelist hosts
- whitelist: "${QUOTA_HOST_WHITELIST:localhost,127.0.0.1}"
- # Array of blacklist hosts
- blacklist: "${QUOTA_HOST_BLACKLIST:}"
- log:
- topSize: 10
- intervalMin: 2
-
kafka:
enabled: true
bootstrap.servers: "${TB_KAFKA_SERVERS:localhost:9092}"
ui/src/app/api/datasource.service.js 18(+15 -3)
diff --git a/ui/src/app/api/datasource.service.js b/ui/src/app/api/datasource.service.js
index dd1a34f..2792151 100644
--- a/ui/src/app/api/datasource.service.js
+++ b/ui/src/app/api/datasource.service.js
@@ -104,6 +104,7 @@ function DatasourceSubscription(datasourceSubscription, telemetryWebsocketServic
var listeners = [];
var datasourceType = datasourceSubscription.datasourceType;
var datasourceData = {};
+ var dataSourceOrigData = {};
var dataKeys = {};
var subscribers = [];
var history = datasourceSubscription.subscriptionTimewindow &&
@@ -140,7 +141,7 @@ function DatasourceSubscription(datasourceSubscription, telemetryWebsocketServic
}
} else {
if (dataKey.postFuncBody && !dataKey.postFunc) {
- dataKey.postFunc = new Function("time", "value", "prevValue", dataKey.postFuncBody);
+ dataKey.postFunc = new Function("time", "value", "prevValue", "timePrev", "prevOrigValue", dataKey.postFuncBody);
}
}
if (datasourceType === types.datasourceType.entity || datasourceSubscription.type === types.widgetType.timeseries.value) {
@@ -165,6 +166,7 @@ function DatasourceSubscription(datasourceSubscription, telemetryWebsocketServic
};
dataKeys[key] = dataKey;
}
+ dataSourceOrigData = angular.copy(datasourceData);
dataKey.key = key;
}
if (datasourceType === types.datasourceType.function) {
@@ -678,27 +680,36 @@ function DatasourceSubscription(datasourceSubscription, telemetryWebsocketServic
var dataKey = dataKeyList[keyIndex];
var data = [];
var prevSeries;
+ var prevOrigSeries;
var datasourceKeyData;
+ var datasourceOrigKeyData;
var update = false;
if (realtime) {
datasourceKeyData = [];
+ datasourceOrigKeyData = [];
} else {
datasourceKeyData = datasourceData[datasourceKey].data;
+ datasourceOrigKeyData = dataSourceOrigData[datasourceKey].data;
}
if (datasourceKeyData.length > 0) {
prevSeries = datasourceKeyData[datasourceKeyData.length - 1];
+ prevOrigSeries = datasourceOrigKeyData[datasourceOrigKeyData.length -1];
} else {
prevSeries = [0, 0];
+ prevOrigSeries = [0, 0];
}
+ dataSourceOrigData[datasourceKey].data = [];
if (datasourceSubscription.type === types.widgetType.timeseries.value) {
var series, time, value;
for (var i = 0; i < keyData.length; i++) {
series = keyData[i];
time = series[0];
+ dataSourceOrigData[datasourceKey].data.push(series);
value = convertValue(series[1]);
if (dataKey.postFunc) {
- value = dataKey.postFunc(time, value, prevSeries[1]);
+ value = dataKey.postFunc(time, value, prevSeries[1], prevOrigSeries[0], prevOrigSeries[1]);
}
+ prevOrigSeries = series;
series = [time, value];
data.push(series);
prevSeries = series;
@@ -708,9 +719,10 @@ function DatasourceSubscription(datasourceSubscription, telemetryWebsocketServic
if (keyData.length > 0) {
series = keyData[0];
time = series[0];
+ dataSourceOrigData[datasourceKey].data.push(series);
value = convertValue(series[1]);
if (dataKey.postFunc) {
- value = dataKey.postFunc(time, value, prevSeries[1]);
+ value = dataKey.postFunc(time, value, prevSeries[1], prevOrigSeries[0], prevOrigSeries[1]);
}
series = [time, value];
data.push(series);
diff --git a/ui/src/app/components/datakey-config.tpl.html b/ui/src/app/components/datakey-config.tpl.html
index f9126e6..ff94f1a 100644
--- a/ui/src/app/components/datakey-config.tpl.html
+++ b/ui/src/app/components/datakey-config.tpl.html
@@ -75,9 +75,16 @@
</md-checkbox>
<tb-js-func ng-if="model.usePostProcessing"
ng-model="model.postFuncBody"
- function-args="{{ ['time', 'value', 'prevValue'] }}"
- validation-args="{{ [[1, 1, 1],[1, '1', '1']] }}"
+ function-args="{{ ['time', 'value', 'prevValue', 'timePrev', 'prevOrigValue'] }}"
+ validation-args="{{ [[1, 1, 1, 1, 1],[1, '1', '1', 1, '1']] }}"
result-type="any">
</tb-js-func>
+ <label ng-if="model.usePostProcessing" class="tb-title" style="margin-left: 15px;">
+ time - {{ 'datakey.time-description' | translate }}</br>
+ value - {{ 'datakey.value-description' | translate }}</br>
+ prevValue - {{ 'datakey.prev-value-description' | translate }}</br>
+ timePrev - {{ 'datakey.time-prev-description' | translate }}</br>
+ prevOrigValue - {{ 'datakey.prev-orig-value-description' | translate }}
+ </label>
</section>
</md-content>
\ No newline at end of file
diff --git a/ui/src/app/locale/locale.constant-en_US.json b/ui/src/app/locale/locale.constant-en_US.json
index 1fde4b6..9f326c7 100644
--- a/ui/src/app/locale/locale.constant-en_US.json
+++ b/ui/src/app/locale/locale.constant-en_US.json
@@ -555,7 +555,12 @@
"alarm-fields-required": "Alarm fields are required.",
"function-types": "Function types",
"function-types-required": "Function types are required.",
- "maximum-function-types": "Maximum { count, plural, 1 {1 function type is allowed.} other {# function types are allowed} }"
+ "maximum-function-types": "Maximum { count, plural, 1 {1 function type is allowed.} other {# function types are allowed} }",
+ "time-description": "timestamp of the current value;",
+ "value-description": "the current value;",
+ "prev-value-description": "result of the previous function call;",
+ "time-prev-description": "timestamp of the previous value;",
+ "prev-orig-value-description": "original previous value;"
},
"datasource": {
"type": "Datasource type",
ui/src/app/locale/locale.constant-TR.json 2344(+1172 -1172)
diff --git a/ui/src/app/locale/locale.constant-TR.json b/ui/src/app/locale/locale.constant-TR.json
index 04575fb..de88116 100644
--- a/ui/src/app/locale/locale.constant-TR.json
+++ b/ui/src/app/locale/locale.constant-TR.json
@@ -1,899 +1,899 @@
{
"access": {
"unauthorized": "Yetkisiz",
- "unauthorized-access": "Yetkisiz Eriþim",
- "unauthorized-access-text": "Bu kaynaða eriþmek için giriþ yapmalýsýnýz!",
- "access-forbidden": "Eriþim Yasaklandý",
- "access-forbidden-text": "Bu yere eriþim haklarýna sahip deðilsiniz! <br/> Bu konuma eriþmek istiyorsanýz yine de farklý kullanýcýlarla giriþ yapmayý deneyin.",
+ "unauthorized-access": "Yetkisiz Erişim",
+ "unauthorized-access-text": "Bu kaynağa erişmek için giriş yapmalısınız!",
+ "access-forbidden": "Erişim Yasaklandı",
+ "access-forbidden-text": "Bu konuma erişim haklarınız yok! <br/> Bu yere hala erişmek istiyorsanız farklı kullanıcılarla oturum açmayı deneyin.",
"refresh-token-expired": "Oturum süresi doldu",
- "refresh-token-failed": "Seans yenilenemiyor"
+ "refresh-token-failed": "Oturum yenilenemiyor"
},
"action": {
- "activate": "Aktive Et",
- "suspend": "Askýya Alma",
- "save": "Kayýt etmek",
- "saveAs": "Farklý kaydet",
- "cancel": "Ýptal etmek",
- "ok": "TAMAM",
+ "activate": "Etkinleştir",
+ "suspend": "Askıya al",
+ "save": "Kaydet",
+ "saveAs": "Farklı Kaydet",
+ "cancel": "İptal",
+ "ok": "Tamam",
"delete": "Sil",
- "add": "Eklemek",
+ "add": "Ekle",
"yes": "Evet",
- "no": "Yok hayýr",
- "update": "Güncelleþtirme",
- "remove": "Kaldýr",
- "search": "Arama",
- "clear-search": "Aramayý Temizle",
- "assign": "Atamak",
- "unassign": "Atamayý kaldýrma",
- "share": "Pay",
+ "no": "Hayır",
+ "update": "Güncelle",
+ "remove": "Kaldır",
+ "search": "Ara",
+ "clear-search": "Aramayı Temizle",
+ "assign": "Ata",
+ "unassign": "Atamayı kaldır",
+ "share": "Paylaş",
"make-private": "Özel yap",
- "apply": "Uygulamak",
- "apply-changes": "Deðiþiklikleri uygula",
- "edit-mode": "Düzenleme modu",
- "enter-edit-mode": "Düzenleme moduna girin",
- "decline-changes": "Deðiþiklikleri reddet",
+ "apply": "Uygula",
+ "apply-changes": "Değişiklikleri Uygula",
+ "edit-mode": "Düzenleme Modu",
+ "enter-edit-mode": "Düzenleme moduna gir",
+ "decline-changes": "Değişiklikleri reddet",
"close": "Kapat",
"back": "Geri",
- "run": "Koþmak",
- "sign-in": "Oturum aç!",
+ "run": "Çalıştır",
+ "sign-in": "Giriş yap!",
"edit": "Düzenle",
- "view": "Görünüm",
- "create": "Yaratmak",
- "drag": "Sürüklemek",
+ "view": "Görüntüle",
+ "create": "Oluştur",
+ "drag": "Sürükle",
"refresh": "Yenile",
- "undo": "Geri alma",
+ "undo": "Geri al",
"copy": "Kopyala",
- "paste": "Yapýþtýrmak",
- "copy-reference": "Referansý kopyala",
- "paste-reference": "Referansý yapýþtýr",
- "import": "Ýthalat",
- "export": "Ýhracat",
- "share-via": "{{Provider}} aracýlýðýyla paylaþ"
+ "paste": "Yapıştır",
+ "copy-reference": "Referansı kopyala",
+ "paste-reference": "Referansı yapıştır",
+ "import": "İçe aktar",
+ "export": "Dışa aktar",
+ "share-via": "{{provider}} ile paylaş"
},
"aggregation": {
"aggregation": "Toplama",
- "function": "Veri toplama iþlevi",
- "limit": "Maksimum deðerler",
- "group-interval": "Gruplama aralýðý",
+ "function": "Veri toplama işlevi",
+ "limit": "Maksimum değerler",
+ "group-interval": "Gruplama aralığı",
"min": "Min",
- "max": "Max",
+ "max": "Maks",
"avg": "Ortalama",
- "sum": "Sum",
- "count": "Sayý",
+ "sum": "Toplam",
+ "count": "Sayı",
"none": "Yok"
},
"admin": {
"general": "Genel",
"general-settings": "Genel Ayarlar",
- "outgoing-mail": "Giden posta",
- "outgoing-mail-settings": "Giden Posta Ayarlarý",
- "system-settings": "Sistem ayarlarý",
- "test-mail-sent": "Test postasý baþarýyla gönderildi!",
+ "outgoing-mail": "Giden Posta",
+ "outgoing-mail-settings": "Giden Posta Ayarları",
+ "system-settings": "Sistem Ayarları",
+ "test-mail-sent": "Test e-postası başarıyla gönderildi!",
"base-url": "Temel URL",
"base-url-required": "Temel URL gerekli.",
- "mail-from": "Mail þu kiþiden geldi",
- "mail-from-required": "Mail From gereklidir.",
+ "mail-from": "Gönderen Kişi",
+ "mail-from-required": "Gönderen Kişi gerekli.",
"smtp-protocol": "SMTP protokolü",
- "smtp-host": "SMTP ana bilgisayarý",
- "smtp-host-required": "SMTP ana bilgisayarý gerekli.",
+ "smtp-host": "SMTP sunucusu",
+ "smtp-host-required": "SMTP sunucusu gerekli.",
"smtp-port": "SMTP portu",
- "smtp-port-required": "Bir smtp portu saðlamalýsýnýz.",
- "smtp-port-invalid": "Bu geçerli bir smtp portuna benzemiyor.",
- "timeout-msec": "Zaman aþýmý (msn)",
- "timeout-required": "Zaman aþýmý gerekli.",
- "timeout-invalid": "Bu geçerli bir zaman aþýmý gibi görünmüyor.",
- "enable-tls": "TLS'yi etkinleþtir",
- "send-test-mail": "Test postasý gönder"
+ "smtp-port-required": "Bir SMTP portu sağlamalısınız.",
+ "smtp-port-invalid": "Bu geçerli bir smtp portu gibi görünmüyor.",
+ "timeout-msec": "Zaman aşımı (milisaniye)",
+ "timeout-required": "Zaman aşımı değeri gerekli.",
+ "timeout-invalid": "Bu geçerli bir zaman aşımı gibi görünmüyor.",
+ "enable-tls": "TLS'i etkinleştir.",
+ "send-test-mail": "Test e-postası gönder"
},
"alarm": {
"alarm": "Alarm",
"alarms": "Alarmlar",
- "select-alarm": "Alarmý seç",
- "no-alarms-matching": " '{{Entity}}' ile eþleþen hiçbir alarm bulunamadý. ",
+ "select-alarm": "Alarm seç",
+ "no-alarms-matching": "'{{entity}}' ile eşleşen alarm bulunamadı.",
"alarm-required": "Alarm gerekli",
"alarm-status": "Alarm durumu",
"search-status": {
"ANY": "Herhangi biri",
"ACTIVE": "Aktif",
"CLEARED": "Temizlendi",
- "ACK": "Kabul edilen",
- "UNACK": "Unacknowledged"
+ "ACK": "Onaylandı",
+ "UNACK": "Onaylanmadı"
},
"display-status": {
- "ACTIVE_UNACK": "Aktif Olmamýþ",
- "ACTIVE_ACK": "Aktif Kabul",
- "CLEARED_UNACK": "Onaylanmamýþ Onaylandý",
- "CLEARED_ACK": "Onaylandý onaylandý"
+ "ACTIVE_UNACK": "Aktif Onaylanmadı",
+ "ACTIVE_ACK": "Aktif Onaylandı",
+ "CLEARED_UNACK": "Temizlendi Onaylanmadı",
+ "CLEARED_ACK": "Temizlendi Onaylandı"
},
- "no-alarms-prompt": "Alarm bulunamadý",
- "created-time": "Zaman yaratýldý",
- "type": "Tür",
- "severity": "Önem",
- "originator": "Originator",
- "originator-type": "Gönderen türü",
- "details": "Ayrýntýlar",
+ "no-alarms-prompt": "Alarm bulunamadı",
+ "created-time": "Oluşma zamanı",
+ "type": "Tip",
+ "severity": "Şiddet",
+ "originator": "Kaynak",
+ "originator-type": "Kaynak tipi",
+ "details": "Detaylar",
"status": "Durum",
- "alarm-details": "Alarm detaylarý",
- "start-time": "Baþlama zamaný",
- "end-time": "Bitiþ zamaný",
- "ack-time": "Onaylanmýþ zaman",
- "clear-time": "Temizlenmiþ zaman",
+ "alarm-details": "Alarm detayları",
+ "start-time": "Başlangıç zamanı",
+ "end-time": "Bitiş zamanı",
+ "ack-time": "Onaylanma zamanı",
+ "clear-time": "Temizlenme zamanı",
"severity-critical": "Kritik",
- "severity-major": "Majör",
- "severity-minor": "Minör",
- "severity-warning": "Uyarý",
+ "severity-major": "Birincil",
+ "severity-minor": "İkincil",
+ "severity-warning": "Uyarı",
"severity-indeterminate": "Belirsiz",
- "acknowledge": "Onay",
- "clear": "Açýk",
- "search": "Arama alarmlarý",
- "selected-alarms": "{count, çoðul, 1 {1 alarm} diðer {# alarm}} seçildi",
- "no-data": "Gösterilecek bilgi yok",
- "polling-interval": "Alarmlar sorgulama aralýðý (sn)",
- "polling-interval-required": "Alarmlar sorgulama aralýðý gerekli.",
- "min-polling-interval-message": "En az 1 san yoklama aralýðýna izin verilir.",
- "aknowledge-alarms-title": "Kabul et { count, plural, 1 {1 alarm} other {# alarms}} selected ",
- "aknowledge-alarms-text": "{Count, plural, 1 {1 alarm} dother {# alarm}} kimliðini kabul etmek istediðinizden emin misiniz?",
- "clear-alarms-title": "Temizle {count, plural, 1 {1 alarm} other {# alarm}}",
- "clear-alarms-text": "count, plural, 1 {1 alarm} diðer {# alarms}} silmek istediðinizden emin misiniz?"
+ "acknowledge": "Onayla",
+ "clear": "Temizle",
+ "search": "Alarm ara",
+ "selected-alarms": "{ count, select, 1 {1 alarm} other {# alarm} } seçildi",
+ "no-data": "Görüntülenecek veri bulunmuyor",
+ "polling-interval": "Alarm yoklama aralığı (saniye)",
+ "polling-interval-required": "Alarm yoklama aralığı gerekli.",
+ "min-polling-interval-message": "Alarm yoklama aralığı en az 1 saniye olmalıdır.",
+ "aknowledge-alarms-title": "{ count, select, 1 {1 alarmı} other {# alarmı} } onayla",
+ "aknowledge-alarms-text": "{ count, select, 1 {1 alarmı} other {# alarmı} } onaylamak istediğinize emin misiniz?",
+ "clear-alarms-title": "{ count, select, 1 {1 alarmı} other {# alarmı} } temizle",
+ "clear-alarms-text": "{ count, select, 1 {1 alarmı} other {# alarmı} } temizlemek istediğinize emin misiniz?"
},
"alias": {
- "add": "Takma ad ekle",
- "edit": "Takma adý düzenle",
- "name": "Takma ad",
- "name-required": "Takma ad gerekli",
- "duplicate-alias": "Ayný ada sahip diðer ad zaten var.",
- "filter-type-single-entity": "Tek varlýk",
- "filter-type-entity-list": "Varlýk listesi",
- "filter-type-entity-name": "Varlýk adý",
- "filter-type-state-entity": "Gösterge panosu durumundan varlýk",
- "filter-type-state-entity-description": "Gösterge panosu durum parametrelerinden alýnan varlýk",
- "filter-type-asset-type": "Varlýk türü",
- "filter-type-asset-type-description": "Öðe varlýklarý {{assetType}} '",
- "filter-type-asset-type-and-name-description": "{{AssetType}} türündeki varlýklar ve {{prefix}} ile baþlayan adla ",
- "filter-type-device-type": "Cihaz tipi",
- "filter-type-device-type-description": "Türlü cihazlar {{deviceType}} ",
- "filter-type-device-type-and-name-description": "{{DeviceType}} türündeki cihazlar ve {{prefix}} ile baþlayan adla ",
- "filter-type-relations-query": "Ýliþkiler sorgusu",
- "filter-type-relations-query-description": "{{relationType}} iliþkisine sahip {{direction}} {{rootEntity}} olan {{entities}}",
- "filter-type-asset-search-query": "Öðe arama sorgusu",
- "filter-type-asset-search-query-description": "{{RelationType}} iliþkisine sahip {{direction}}} türlerine sahip öðeler {{direction}} {{rootEntity}} ",
- "filter-type-device-search-query": "Cihaz arama sorgusu",
- "filter-type-device-search-query-description": "{{RelationType}} iliþkisi olan {{direction}} {{rootEntity}} içeren {{deviceTypes}} türüne sahip cihazlar",
- "entity-filter": "Varlýk filtresi",
- "resolve-multiple": "Birden çok varlýk olarak çöz",
+ "add": "Kısa ad ekle",
+ "edit": "Kısa ad düzenle",
+ "name": "Kısa ad",
+ "name-required": "Kısa ad gerekli",
+ "duplicate-alias": "Aynı kısa ad daha önce kullanılmış.",
+ "filter-type-single-entity": "Tek öğe",
+ "filter-type-entity-list": "Öğe listesi",
+ "filter-type-entity-name": "Öğe adı",
+ "filter-type-state-entity": "Kontrol panelinden öğe",
+ "filter-type-state-entity-description": "Kontrol tablosu durum parametrelerinden alınan öğeler",
+ "filter-type-asset-type": "Varlık türü",
+ "filter-type-asset-type-description": "'{{assetType}}' türünde varlıklar",
+ "filter-type-asset-type-and-name-description": "Adı '{{prefix}}' ile başlayan '{{assetType}}' türünde varlıklar",
+ "filter-type-device-type": "Aygıt türü",
+ "filter-type-device-type-description": "'{{deviceType}}' türünde aygıtlar",
+ "filter-type-device-type-and-name-description": "Adı '{{prefix}}' ile başlayan'{{deviceType}}' türünde aygıtlar",
+ "filter-type-relations-query": "İlişkiler sorgusu",
+ "filter-type-relations-query-description": "{{relationType}} türünde ilişkili olan varlıklar: {{entities}}. {{direction}}: {{rootEntity}}",
+ "filter-type-asset-search-query": "Varlık arama sorgusu",
+ "filter-type-asset-search-query-description": "{{relationType}} türünde ilişkisi olan varlıklar {{assetTypes}}. {{direction}}: {{rootEntity}}",
+ "filter-type-device-search-query": "Aygıt arama sorgusu",
+ "filter-type-device-search-query-description": "{{relationType}} türünde ilişkisi olan aygıt tipleri {{deviceTypes}}. {{direction}}: {{rootEntity}}",
+ "entity-filter": "Öğe filtresi",
+ "resolve-multiple": "Çoklu öğe olarak çözümle",
"filter-type": "Filtre tipi",
- "filter-type-required": "Filtre türü gerekli.",
- "entity-filter-no-entity-matched": "Belirtilen filtreyle eþleþen varlýk bulunamadý.",
- "no-entity-filter-specified": "Hiçbir varlýk filtresi belirtilmemiþ",
- "root-state-entity": "Gösterge panosu durum varlýðýný root olarak kullan",
- "root-entity": "Kök varlýk",
- "state-entity-parameter-name": "Durum öðesi parametre adý",
- "default-state-entity": "Varsayýlan durum varlýðý",
- "default-entity-parameter-name": "Varsayýlan olarak",
- "max-relation-level": "Maksimum iliþki seviyesi",
- "unlimited-level": "Sýnýrsýz seviye",
- "state-entity": "Gösterge panosu durumu",
- "all-entities": "Tüm varlýklar",
- "any-relation": "Herhangi"
+ "filter-type-required": "Filtre tipi gerekli.",
+ "entity-filter-no-entity-matched": "Belirlenen filtre ile eşleşen bir öğe bulunamadı.",
+ "no-entity-filter-specified": "Hiçbir öğe filtresi belirtilmedi",
+ "root-state-entity": "Kontrol panelini kök olarak kullan",
+ "root-entity": "Kök öğe",
+ "state-entity-parameter-name": "Durum varlığı parametre adı",
+ "default-state-entity": "Varsayılan durum öğesi",
+ "default-entity-parameter-name": "Varsayılan",
+ "max-relation-level": "Maksimum ilişki düzeyi",
+ "unlimited-level": "Sınırsız seviye",
+ "state-entity": "Kontrol paneli öğesi",
+ "all-entities": "Tüm öğeler",
+ "any-relation": "Herhangi biri"
},
"asset": {
- "asset": "Varlýk",
- "assets": "Varlýklar",
- "management": "Varlýk Yönetimi",
- "view-assets": "Varlýklarý Görüntüle",
- "add": "Öðe Ekle",
- "assign-to-customer": "Müþteriye atama",
- "assign-asset-to-customer": "Müþteriye Varlýk (lar) Atama",
- "assign-asset-to-customer-text": "Lütfen müþteriye atamak için varlýklarý seçin",
- "no-assets-text": "Öðe bulunamadý",
- "assign-to-customer-text": "Lütfen varlýk (lar) a atamak için müþteriyi seçin",
- "public": "Halka açýk",
- "assignedToCustomer": "Müþteriye atandý",
- "make-public": "Varlýðý herkese açýk yap",
- "make-private": "Varlýk özel yap",
- "unassign-from-customer": "Müþteriden atama",
- "delete": "Öðeyi sil",
- "asset-public": "Varlýk halka açýk",
- "asset-type": "Varlýk türü",
- "asset-type-required": "Öðe türü gerekli.",
- "select-asset-type": "Varlýk türünü seç",
- "enter-asset-type": "Varlýk türünü girin",
- "any-asset": "Herhangi bir varlýk",
- "no-asset-types-matching": "{{EntitySubtype}} ile eþleþen öðe türü bulunamadý. ",
- "asset-type-list-empty": "Hiçbir öðe türü seçilmedi.",
- "asset-types": "Varlýk türleri",
- "name": "Ad",
- "name-required": "Ýsim gerekli.",
- "description": "Açýklama",
+ "asset": "Varlık",
+ "assets": "Varlıklar",
+ "management": "Varlık Yönetimi",
+ "view-assets": "Varlıkları Görüntüle",
+ "add": "Varlık ekle",
+ "assign-to-customer": "Kullanıcı grubuna ata",
+ "assign-asset-to-customer": "Varlıkları Kullanıcı Grubuna Ata",
+ "assign-asset-to-customer-text": "Lütfen kullanıcı grubuna atanacak varlıkları seçin",
+ "no-assets-text": "Varlık bulunamadı",
+ "assign-to-customer-text": "Lütfen varlıkları atamak için kullanıcı grubu seçin",
+ "public": "Açık",
+ "assignedToCustomer": "Kullanıcı grubuna atandı",
+ "make-public": "Varlığı açık hale getir",
+ "make-private": "Varlığı özel hale getir",
+ "unassign-from-customer": "Kullanıcı grubundan atamayı kaldır",
+ "delete": "Varlığı sil",
+ "asset-public": "Varlık açık halde",
+ "asset-type": "Varlık türü",
+ "asset-type-required": "Varlık türü gerekli.",
+ "select-asset-type": "Varlık türü seçin",
+ "enter-asset-type": "Varlık türü girin",
+ "any-asset": "Herhangi bir varlık",
+ "no-asset-types-matching": "'{{entitySubtype}}' ile eşleşen varlık bulunamadı.",
+ "asset-type-list-empty": "Herhangi bir varlık türü bulunamadı.",
+ "asset-types": "Varlık türleri",
+ "name": "İsim",
+ "name-required": "İsim gerekli.",
+ "description": "Açıklama",
"type": "Tür",
"type-required": "Tür gerekli.",
- "details": "Ayrýntýlar",
- "events": "Etkinlikler",
- "add-asset-text": "Yeni varlýk ekle",
- "asset-details": "Varlýk ayrýntýlarý",
- "assign-assets": "Öðeleri atama",
- "assign-assets-text": "Müþteriye {count, çoðul, 1 {1 asset}} diðer {# asset}} atayýn ",
- "delete-assets": "Öðeleri sil",
- "unassign-assets": "Varlýklarý atama",
- "unassign-assets-action-title": "Müþteriden tekil, sayým, çoðul, 1 {1 öðe} diðer {# varlýk}} atama ",
- "assign-new-asset": "Yeni varlýk atama",
- "delete-asset-title": "Öðeyi {{assetName}} silmek istediðinizden emin misiniz?",
- "delete-asset-text": "Dikkatli olun, onaylandýktan sonra varlýk ve ilgili tüm veriler kurtarýlamaz.",
- "delete-assets-title": "{Count, çoðul, 1 {1 asset} diðer {# asset}} silmek istediðinizden emin misiniz?",
- "delete-assets-action-title": "Sil {count, çoðul, 1 {1 asset} diðer {# asset}}",
- "delete-assets-text": "Dikkatli olun, onaylandýktan sonra tüm seçilmiþ varlýklar kaldýrýlacak ve ilgili tüm veriler kurtarýlamayacaktýr.",
- "make-public-asset-title": "Varlýðý {{assetName}} herkese açýk yapmak istediðinizden emin misiniz? ",
- "make-public-asset-text": "Onaydan sonra varlýk ve tüm verileri kamuya açýk ve baþkalarý tarafýndan eriþilebilir olacak.",
- "make-private-asset-title": "Öðeyi {{assetName}} özel yapmak istediðinizden emin misiniz? ",
- "make-private-asset-text": "Onaydan sonra varlýk ve tüm verileri gizli tutulacak ve baþkalarý tarafýndan eriþilemeyecektir.",
- "unassign-asset-title": "Öðeyi {{assetName}} öðesinin atamasýný kaldýrmak istediðinizden emin misiniz?",
- "unassign-asset-text": "Onaydan sonra varlýk atama yapýlmayacak ve müþteri tarafýndan eriþilemeyecektir.",
- "unassign-asset": "Atama atamayý kaldýr",
- "unassign-assets-title": "count, plural, 1 {1 öðe} other {# asset}} atama atamak istediðinizden emin misiniz?",
- "unassign-assets-text": "Onaylandýktan sonra, seçilen tüm öðeler atamadan kaldýrýlacak ve müþteri tarafýndan eriþilemeyecektir.",
- "copyId": "Öðe Kimliði Kopyala",
- "idCopiedMessage": "Öðe Kimliði panoya kopyalandý",
- "select-asset": "Varlýk seç",
- "no-assets-matching": "{{Entity}} ile eþleþen hiçbir öðe bulunamadý. ",
- "asset-required": "Varlýk gerekli",
- "name-starts-with": "Öðe adý ile baþlar"
+ "details": "Detaylar",
+ "events": "Olaylar",
+ "add-asset-text": "Yeni varlık ekle",
+ "asset-details": "Varlık detayları",
+ "assign-assets": "Varlıkları ata",
+ "assign-assets-text": "{ count, select, 1 {1 varlığı} other {# varlığı} } kullanıcı grubuna ata",
+ "delete-assets": "Varlıkları sil",
+ "unassign-assets": "Varlıkların atamalarını kaldır",
+ "unassign-assets-action-title": "{ count, select, 1 {1 varlığın} other {# varlığın} } atamalarını kullanıcı grubundan kaldır",
+ "assign-new-asset": "Yeni varlık ata",
+ "delete-asset-title": "'{{assetName}}' isimli varlığı silmek istediğinize emin misiniz?",
+ "delete-asset-text": "UYARI: Onaylandıktan sonra varlık ve ilgili tüm veriler geri yüklenemeyecek şekilde silinecek.",
+ "delete-assets-title": "{ count, select, 1 {1 varlığı} other {# varlığı} } silmek istediğinize emin misiniz?",
+ "delete-assets-action-title": "{ count, select, 1 {1 varlığı} other {# varlığı} } sil",
+ "delete-assets-text": "UYARI: Onaylandıktan sonra tüm seçili varlıklar ver ilgili tüm veriler geri yüklenemyeck şekilde silinecek.",
+ "make-public-asset-title": "'{{assetName}}' isimli varlığı açık hale getirmek istediğinize emin misiniz?",
+ "make-public-asset-text": "Onaylandıktan sonra varlık ve ilgili veriler açık hale gelecek ve başkaları tarafından erişilebilir olacaktır.",
+ "make-private-asset-title": "'{{assetName}}' isimli varlığı özel hale getirmek istediğinize emin misiniz?",
+ "make-private-asset-text": "Onaylandıktan sonra varlık ve ilgili veriler özel hale gelecek ve başkaları tarafından erişilemez olacaktır.",
+ "unassign-asset-title": "'{{assetName}}' isimli varlığın atamasını kaldırmak istediğinize emin misiniz?",
+ "unassign-asset-text": "Onaylandıktan sonra varlığın ataması kaldırılacak ve kullanıcı grubu tarafından erişilemez olacaktır.",
+ "unassign-asset": "Varlık atamasını kaldır",
+ "unassign-assets-title": " { count, select, 1 {1 varlık} other {# varlık} } atamasını kaldırmak istediğinize emin misiniz?",
+ "unassign-assets-text": "Onaylandıktan sonra tüm seçili varlıkların ataması kaldırılacak ve kullanıcı grubu tarafından erişilemez olacaktır.",
+ "copyId": "Varlık kimliğini kopyala",
+ "idCopiedMessage": "Varlık kimliği panoya kopyalandı",
+ "select-asset": "Varlık seç",
+ "no-assets-matching": "'{{entity}}' isimli varlık bulunamadı.",
+ "asset-required": "Varlık gerekli",
+ "name-starts-with": "... ile başlayan varlık adı"
},
"attribute": {
- "attributes": "Öznitellikler",
+ "attributes": "Öznitelikler",
"latest-telemetry": "Son telemetri",
- "attributes-scope": "Varlýk öznitelikleri kapsamý",
+ "attributes-scope": "Varlık öznitelik kapsamı",
"scope-latest-telemetry": "Son telemetri",
- "scope-client": "Müþteri özellikleri",
- "scope-server": "Sunucu öznitelikleri",
- "scope-shared": "Paylaþýlan özellikler",
- "add": "Özellik ekle",
+ "scope-client": "İstemci öznitelikler",
+ "scope-server": "Sunucu öznitelikler",
+ "scope-shared": "Paylaşılan öznitelikler",
+ "add": "Öznitelik ekle",
"key": "Anahtar",
- "last-update-time": "Son güncelleme zamaný",
- "key-required": "Özellik anahtarý gerekli.",
- "value": "Deðer",
- "value-required": "Özellik deðeri gerekli.",
- "delete-attributes-title": "{Count, çoðul, 1 {1 özellik} diðer {# attributes}} silmek istediðinizden emin misiniz?",
- "delete-attributes-text": "Dikkatli olun, onaylandýktan sonra tüm seçilen özellikler kaldýrýlacak.",
- "delete-attributes": "Nitelikleri sil",
- "enter-attribute-value": "Özellik deðerini girin",
- "show-on-widget": "Widgetta göster",
- "widget-mode": "Widget modu",
- "next-widget": "Sonraki pencere öðesi",
- "prev-widget": "Önceki pencere öðesi",
- "add-to-dashboard": "Gösterge tablosuna ekle",
- "add-widget-to-dashboard": "Gösterge tablosuna widget ekle",
- "selected-attributes": "{count, çoðul, 1 {1 özellik} diðer {# attributes}} seçildi",
- "selected-telemetry": "{count, çoðul, 1 {1 telemetri birimi} diðer {# telemetri birimleri}} seçildi"
+ "last-update-time": "Son güncelleme zamanı",
+ "key-required": "Öznitelik anahtarı gerekli.",
+ "value": "Değer",
+ "value-required": "Öznitelik değeri gerekli.",
+ "delete-attributes-title": "Silmek istediğinize emin misiniz { count, select, 1 {1 öznitelik} other {# öznitelik} }?",
+ "delete-attributes-text": "UYARI: Onaylandıktan sonra tüm seçili öznitelikler kaldırılacak.",
+ "delete-attributes": "Öznitelikleri sil",
+ "enter-attribute-value": "Öznitelik değeri gir",
+ "show-on-widget": "Göstergede göster",
+ "widget-mode": "Gösterge modu",
+ "next-widget": "Sonraki gösterge",
+ "prev-widget": "Önceki gösterge",
+ "add-to-dashboard": "Kontrol paneline ekle",
+ "add-widget-to-dashboard": "Göstergeyi kontrol paneline ekle",
+ "selected-attributes": "{ count, select, 1 {1 öznitelik} other {# öznitelik} } seçildi",
+ "selected-telemetry": "{ count, select, 1 {1 telemetri birimi} other {# telemetri birimi} } seçildi"
},
"audit-log": {
- "audit": "Denetim",
- "audit-logs": "Denetim Kayýtlarý",
- "timestamp": "Zaman Damgasý",
- "entity-type": "Varlýk Türü",
- "entity-name": "Varlýk adý",
- "user": "Kullanýcý",
+ "audit": "Log ve Hata Yönetimi",
+ "audit-logs": "Loglar ve Hatalar",
+ "timestamp": "Zaman",
+ "entity-type": "Kaynak",
+ "entity-name": "İsim",
+ "user": "Kullanıcı",
"type": "Tür",
"status": "Durum",
- "details": "Ayrýntýlar",
- "type-added": "Katma",
+ "details": "Detaylar",
+ "type-added": "Eklendi",
"type-deleted": "Silindi",
- "type-updated": "Güncellenmiþ",
- "type-attributes-updated": "Öznitelikler güncellendi",
- "type-attributes-deleted": "Öznitelikler silindi",
- "type-rpc-call": "RPC çaðrýsý",
+ "type-updated": "Güncellendi",
+ "type-attributes-updated": "Özellikler güncellendi",
+ "type-attributes-deleted": "Özellikler silindi",
+ "type-rpc-call": "Uzaktan işlem çağrısı",
"type-credentials-updated": "Kimlik bilgileri güncellendi",
- "type-assigned-to-customer": "Müþteriye Atanan",
- "type-unassigned-from-customer": "Müþteriden Atanmamýþ",
- "type-activated": "Aktif",
- "type-suspended": "Askýya alýndý",
+ "type-assigned-to-customer": "Kullanıcı grubuna atandı",
+ "type-unassigned-from-customer": "Kullanıcı grubundan atama kaldırıldı",
+ "type-activated": "Etkinleştirildi",
+ "type-suspended": "Askıya alındı",
"type-credentials-read": "Kimlik bilgileri okundu",
- "type-attributes-read": "Nitelikler oku",
- "type-relation-add-or-update": "Ýliþki güncellendi",
- "type-relation-delete": "Ýliþki silindi",
- "type-relations-delete": "Tüm iliþki silindi",
+ "type-attributes-read": "Özellikler okundu",
+ "type-relation-add-or-update": "İlişki güncellendi",
+ "type-relation-delete": "İlişki silindi",
+ "type-relations-delete": "Tüm ilişki silindi",
"type-alarm-ack": "Kabul edilen",
"type-alarm-clear": "Temizlendi",
- "status-success": "Baþarý",
- "status-failure": "Baþarýsýzlýk",
- "audit-log-details": "Denetim kaydý ayrýntýlarý",
- "no-audit-logs-prompt": "Kayýt bulunamadý",
- "action-data": "Eylem verileri",
- "failure-details": "Arýza detaylarý",
- "search": "Denetim günlüklerini ara",
- "clear-search": "Aramayý Temizle"
+ "status-success": "Başarılı",
+ "status-failure": "Başarısız",
+ "audit-log-details": "Log ve hata detayları",
+ "no-audit-logs-prompt": "Log ve hata bulunamadı",
+ "action-data": "Eylem verisi",
+ "failure-details": "Başarısız işlem detayları",
+ "search": "Hata ve Log Geçmişinde Ara",
+ "clear-search": "Aramayı temizle"
},
"confirm-on-exit": {
- "message": "Kaydedilmemiþ deðiþiklikleriniz var. Bu sayfadan ayrýlmak istediðinizden emin misiniz?",
- "html-message": "Kaydedilmemiþ deðiþiklikleriniz var. <br/> Bu sayfadan ayrýlmak istediðinizden emin misiniz?",
- "title": "Kaydedilmemiþ deðiþiklikler"
+ "message": "Kaydedilmemiş değişiklikler var. Sayfadan ayrılmak istediğinize emin misiniz?",
+ "html-message": "Kaydedilmemiş değişiklikler var.<br/>Sayfadan ayrılmak istediğinize emin misiniz?",
+ "title": "Kaydedilmemiş Değişiklikler"
},
"contact": {
"country": "Ülke",
- "city": "Kent",
- "state": "Eyalet / Ýl",
+ "city": "Şehir",
+ "state": "Eyalet / İl",
"postal-code": "Posta Kodu",
- "postal-code-invalid": "Geçersiz Posta Kodu / Posta Kodu biçimi.",
- "address": "Adres",
- "address2": "Adres 2",
+ "postal-code-invalid": "Geçersiz Posta Kodu.",
+ "address": "Addres",
+ "address2": "Addres 2",
"phone": "Telefon",
"email": "E-posta",
"no-address": "Adres yok"
},
"common": {
- "username": "Kullanýcý adý",
+ "username": "Kullanıcı adı",
"password": "Parola",
- "enter-username": "Kullanýcý adý girin",
- "enter-password": "Parolaný Gir",
- "enter-search": "Arama girin"
+ "enter-username": "Kullanıcı adı gir",
+ "enter-password": "Parola gir",
+ "enter-search": "Arama gir"
},
"content-type": {
"json": "Json",
"text": "Metin",
- "binary": "Ýkili (Base64)"
+ "binary": "İkili (Base64)"
},
"customer": {
- "customer": "Müþteri",
- "customers": "Müþteriler",
- "management": "Müþteri yönetimi",
- "dashboard": "Müþteri Kontrol Paneli",
- "dashboards": "Müþteri Kontrol Panelleri",
- "devices": "Müþteri Cihazlarý",
- "entity-views": "Müþteri Varlýðý Görüntüleme Sayýsý",
- "assets": "Müþteri Varlýklarý",
- "public-dashboards": "Genel Panolar",
- "public-devices": "Kamu Aygýtlarý",
- "public-assets": "Kamu Varlýklarý",
- "public-entity-views": "Kamu Varlýk Görüntüleme Sayýsý",
- "add": "Müþteri Ekle",
- "delete": "Müþteriyi sil",
- "manage-customer-users": "Müþteri kullanýcýlarýný yönet",
- "manage-customer-devices": "Müþteri cihazlarýný yönet",
- "manage-customer-dashboards": "Müþteri panolarýný yönet",
- "manage-public-devices": "Genel cihazlarý yönet",
- "manage-public-dashboards": "Genel panolarý yönet",
- "manage-customer-assets": "Müþteri varlýklarýný yönet",
- "manage-public-assets": "Kamu varlýklarýný yönet",
- "add-customer-text": "Yeni müþteri ekle",
- "no-customers-text": "Müþteri bulunamadý",
- "customer-details": "Müþteri detaylarý",
- "delete-customer-title": "Müþteriyi silmek istediðinizden emin misiniz? {{CustomerTitle}} ? ",
- "delete-customer-text": "Dikkatli olun, onaylandýktan sonra müþteri ve ilgili tüm veriler kurtarýlamaz.",
- "delete-customers-title": "{Count, çoðul, 1 {1 müþteri} diðer {# customers}} silmek istediðinizden emin misiniz?",
- "delete-customers-action-title": "Sil {count, çoðul, 1 {1 müþteri} diðer {# customers}}",
- "delete-customers-text": "Dikkatli olun, onaylandýktan sonra tüm seçilen müþteriler kaldýrýlacak ve ilgili tüm veriler kurtarýlamayacaktýr.",
- "manage-users": "Kullanýcýlarý Yönet",
- "manage-assets": "Varlýklarý yönet",
- "manage-devices": "Cihazlarý yönet",
- "manage-dashboards": "Gösterge tablolarýný yönet",
- "title": "Baþlýk",
- "title-required": "Baþlýk gerekli.",
- "description": "Açýklama",
- "details": "Ayrýntýlar",
- "events": "Etkinlikler",
- "copyId": "Müþteri kimliðini kopyala",
- "idCopiedMessage": "Müþteri Kimliði panoya kopyalandý",
- "select-customer": "Müþteriyi seç",
- "no-customers-matching": "{{Entity}} ile eþleþen hiçbir müþteri bulunamadý. ",
- "customer-required": "Müþteri gerekli",
- "select-default-customer": "Varsayýlan müþteriyi seç",
- "default-customer": "Varsayýlan müþteri",
- "default-customer-required": "Kiracý düzeyinde gösterge tablosunda hata ayýklamak için varsayýlan müþteri gerekiyor"
+ "customer": "Kullanıcı Grubu",
+ "customers": "Kullanıcı Grupları",
+ "management": "Kullanıcı Grubu Yönetimi",
+ "dashboard": "Kullanıcı Grubu Kontrol Paneli",
+ "dashboards": "Kullanıcı Grubu Kontrol Panellleri",
+ "devices": "Kullanıcı Grubu Aygıtları",
+ "entity-views": "Müşteri Varlığı Görüntüleme Sayısı",
+ "assets": "Kullanıcı Grubu Varlıkları",
+ "public-dashboards": "Açık Kontrol Panelleri",
+ "public-devices": "Açık Aygıtlar",
+ "public-assets": "Açık Varlıklar",
+ "public-entity-views": "Kamu Varlık Görüntüleme Sayısı",
+ "add": "Kullanıcı grubu ekle",
+ "delete": "Kullanıcı grubunu sil",
+ "manage-customer-users": "Kullanıcı grubu kullanıcılarını yönet",
+ "manage-customer-devices": "Kullanıcı grubu aygıtlarını yönet",
+ "manage-customer-dashboards": "Kullanıcı grubu kontrol panellerini yönet",
+ "manage-public-devices": "Açık aygıtları yönet",
+ "manage-public-dashboards": "Açık kontrol panellerini yönet",
+ "manage-customer-assets": "Kullanıcı Grubu varlıklarını yönet",
+ "manage-public-assets": "Açık varlıkları yönet",
+ "add-customer-text": "Yeni Kullanıcı Grubu ekle",
+ "no-customers-text": "Kullanıcı Grubu bulunamadı",
+ "customer-details": "Kullanıcı Grubu detayları",
+ "delete-customer-title": "'{{customerTitle}}' isimli kullanıcı grubunu silmek istediğinize emin misiniz?",
+ "delete-customer-text": "UYARI: Onaylandıktan sonra kullanıcı grubu ve tüm ilişkili veriler geri yüklenemeyecek şekilde silinecek.",
+ "delete-customers-title": "{ count, select, 1 {1 kullanıcı grubunu} other {# kullanıcı grubunu} } silmek istediğinize emin misiniz?",
+ "delete-customers-action-title": "{ count, select, 1 {1 kullanıcı grubunu} other {# kullanıcı grubunu} } sil",
+ "delete-customers-text": "UYARI: Onaylandıktan sonra tüm seçili kullanıcı grupları ve ilişkili veriler geri yüklenemez şekilde silinecek.",
+ "manage-users": "Kullanıcıları yönet",
+ "manage-assets": "Varlıkları yönet",
+ "manage-devices": "Aygıtları yönet",
+ "manage-dashboards": "Kontrol panellerini yönet",
+ "title": "Başlık",
+ "title-required": "Başlık gerekli.",
+ "description": "Açıklama",
+ "details": "Detaylar",
+ "events": "Olaylar",
+ "copyId": "Kullanıcı kimliğini kopyala",
+ "idCopiedMessage": "Kullanıcı kimliği panoya kopyalandı",
+ "select-customer": "Kullanıcı grubunu seç",
+ "no-customers-matching": "'{{entity}}' ile eşleşen kullanıcı grubu bulunamadı.",
+ "customer-required": "Kullanıcı grubu gerekli",
+ "select-default-customer": "Varsayılan müşteriyi seç",
+ "default-customer": "Varsayılan müşteri",
+ "default-customer-required": "Kiracı düzeyinde gösterge tablosunda hata ayıklamak için varsayılan müşteri gerekiyor"
},
"datetime": {
- "date-from": "Tarih",
- "time-from": "Zaman",
- "date-to": "Tarih",
- "time-to": "Zaman"
+ "date-from": "Tarihinden",
+ "time-from": "Saatinden",
+ "date-to": "Tarihine",
+ "time-to": "Saatine"
},
"dashboard": {
- "dashboard": "Pano",
- "dashboards": "Gösterge tablolarý",
- "management": "Gösterge tablosu yönetimi",
- "view-dashboards": "Gösterge Panolarý",
- "add": "Gösterge Tablosu Ekle",
- "assign-dashboard-to-customer": "Gösterge Tablosunu / Müþterilerini Müþteriye Atama",
- "assign-dashboard-to-customer-text": "Lütfen müþteriye atamak için kontrol panellerini seçin",
- "assign-to-customer-text": "Gösterge panellerini atamak için lütfen müþteriyi seçiniz",
- "assign-to-customer": "Müþteriye atama",
- "unassign-from-customer": "Müþteriden atama",
- "make-public": "Gösterge panosunu herkese açýk yap",
- "make-private": "Gösterge panosunu özel yap",
- "manage-assigned-customers": "Atanan müþterileri yönet",
- "assigned-customers": "Atanan müþteriler",
- "assign-to-customers": "Gösterge Tablosunu / Müþterilerini Müþterilere Atama",
- "assign-to-customers-text": "Lütfen gösterge panosunu atamak için müþterileri seçin",
- "unassign-from-customers": "Müþterilerden Gösterge Tablosunu (Notlarýný) Atama",
- "unassign-from-customers-text": "Lütfen gösterge tablosundan atamak için müþterileri seçin",
- "no-dashboards-text": "Gösterge panelleri bulunamadý",
- "no-widgets": "Hiçbir widget yapýlandýrýlmamýþ",
- "add-widget": "Yeni pencere öðesi ekle",
- "title": "Baþlýk",
- "select-widget-title": "Widget seç",
- "select-widget-subtitle": "Kullanýlabilir pencere öðesi türleri",
- "delete": "Gösterge tablosunu sil",
- "title-required": "Baþlýk gerekli.",
- "description": "Açýklama",
- "details": "Ayrýntýlar",
- "dashboard-details": "Gösterge tablosu ayrýntýlarý",
- "add-dashboard-text": "Yeni gösterge tablosu ekle",
- "assign-dashboards": "Gösterge tablolarý atama",
- "assign-new-dashboard": "Yeni kontrol paneli atama",
- "assign-dashboards-text": "Müþterilere {count, plural, 1 {1 gösterge tablosu} other {# dashboard}}} atayýn ",
- "unassign-dashboards-action-text": "Müþterilerden atama sayýsý, çoðul, 1 {1 gösterge tablosu} diðer {# panolar}}",
- "delete-dashboards": "Gösterge tablolarýný sil",
- "unassign-dashboards": "Atanmamýþ gösterge panolarý",
- "unassign-dashboards-action-title": "Müþteriden atama sayým, çoðul, 1 {1 gösterge tablosu} diðer {# pano}}",
- "delete-dashboard-title": "'{{DashboardTitle}}' gösterge panosunu silmek istediðinizden emin misiniz?",
- "delete-dashboard-text": "Doðrulamadan sonra, kontrol panelinden ve ilgili tüm veriler kurtarýlamayacak.",
- "delete-dashboards-title": "{Count, çoðul, 1 {1 dashboard} diðer {# dashboards}} silmek istediðinizden emin misiniz?",
- "delete-dashboards-action-title": "Sil {count, çoðul, 1 {1 gösterge tablosu} diðer {# dashboard}}",
- "delete-dashboards-text": "Dikkatli olun, onaylandýktan sonra tüm seçilen panolar silinecek ve ilgili tüm veriler kurtarýlamayacaktýr.",
- "unassign-dashboard-title": "{{DashboardTitle}} gösterge tablosunun atamasýný kaldýrmak istediðinizden emin misiniz? ",
- "unassign-dashboard-text": "Onaydan sonra gösterge panosu atanmamýþ olacak ve müþteri tarafýndan eriþilemeyecektir.",
- "unassign-dashboard": "Atanmamýþ gösterge panosu",
- "unassign-dashboards-title": "Sayým, çoðul, 1 {1 gösterge tablosu} diðer {# panolar}} atama atamak istediðinizden emin misiniz?",
- "unassign-dashboards-text": "Onaydan sonra tüm seçilen gösterge tablolarý atanmamýþ olacak ve müþteri tarafýndan eriþilemeyecektir.",
- "public-dashboard-title": "Gösterge panosu artýk herkese açýk",
- "public-dashboard-text": "Gösterge tablonuz <b> {{dashboardTitle}} </ b> artýk herkese açýk ve bir sonraki herkese açýk <a href='{{publicLink}} 'target='_blank'> link </a> üzerinden eriþilebilir:",
- "public-dashboard-notice": "<b> Not: </ b> Verilerine eriþmek için ilgili cihazlarý herkese açýk yapmayý unutmayýn.",
- "make-private-dashboard-title": "Gösterge panosunu {{dashboardTitle}} özel yapmak istediðinizden emin misiniz?",
- "make-private-dashboard-text": "Onaydan sonra gösterge panosu özel hale getirilecek ve baþkalarý tarafýndan eriþilemeyecektir.",
- "make-private-dashboard": "Gösterge panosunu özel yap",
- "socialshare-text": "'{{dashboardTitle}} ThingsBoard tarafýndan desteklenmektedir ",
- "socialshare-title": "'{{dashboardTitle}} ThingsBoard tarafýndan desteklenmektedir ",
- "select-dashboard": "Gösterge tablosu seç",
- "no-dashboards-matching": "{{Entity}} ile eþleþen hiçbir gösterge paneli bulunamadý. ",
- "dashboard-required": "Gösterge tablosu gerekli.",
- "select-existing": "Mevcut kontrol panelini seç",
- "create-new": "Yeni gösterge tablosu oluþtur",
- "new-dashboard-title": "Yeni kontrol paneli baþlýðý",
- "open-dashboard": "Açýk kontrol paneli",
- "set-background": "Arka planý ayarla",
+ "dashboard": "Kontrol Paneli",
+ "dashboards": "Kontrol Panelleri",
+ "management": "Kontrol Paneli Yönetimi",
+ "view-dashboards": "Kontrol Panellerini Görüntüle",
+ "add": "Kontrol Paneli Ekle",
+ "assign-dashboard-to-customer": "Kullanıcı Grubuna Kontrol Panel(ler)i Ata",
+ "assign-dashboard-to-customer-text": "Lütfen kullanıcı grubuna atanacak kontrol panellerini seçin",
+ "assign-to-customer-text": "Lütfen kontrol panel(ler)ini atayacak kullanıcı grubu seçin",
+ "assign-to-customer": "Kullanıcı grubuna ata",
+ "unassign-from-customer": "Kullanıcı grubundan atamayı kaldır",
+ "make-public": "Kontrol panelini açık hale getir",
+ "make-private": "Kontrol panelini özel hale getir",
+ "manage-assigned-customers": "Atanan müşterileri yönet",
+ "assigned-customers": "Atanan müşteriler",
+ "assign-to-customers": "Gösterge Tablosunu / Müşterilerini Müşterilere Atama",
+ "assign-to-customers-text": "Lütfen gösterge panosunu atamak için müşterileri seçin",
+ "unassign-from-customers": "Müşterilerden Gösterge Tablosunu (Notlarını) Atama",
+ "unassign-from-customers-text": "Lütfen gösterge tablosundan atamak için müşterileri seçin",
+ "no-dashboards-text": "Kontrol paneli bulunamadı",
+ "no-widgets": "Hiçbir gösterge yapılandırılmadı",
+ "add-widget": "Yeni gösterge ekle",
+ "title": "Başlık",
+ "select-widget-title": "Gösterge seç",
+ "select-widget-subtitle": "Kullanılabilir gösterge türleri listesi",
+ "delete": "Kontrol paneli sil",
+ "title-required": "Başlık gerekli.",
+ "description": "Açıklama",
+ "details": "Detaylar",
+ "dashboard-details": "Kontrol paneli detayları",
+ "add-dashboard-text": "Yeni kontrol paneli ekle",
+ "assign-dashboards": "Kontrol panelleri ata",
+ "assign-new-dashboard": "Yeni kontrol paneli ata",
+ "assign-dashboards-text": "{ count, select, 1 {1 kontrol panelini} other {# kontrol panelini} } kullanıcı grubuna ata",
+ "unassign-dashboards-action-text": "Müşterilerden atama sayısı, çoğul, 1 {1 gösterge tablosu} diğer {# panolar}}",
+ "delete-dashboards": "Kontrol panellerini sil",
+ "unassign-dashboards": "Kontrol panellerinden atamayı kaldır",
+ "unassign-dashboards-action-title": "{ count, select, 1 {1 kontrol panelinin} other {# kontrol panelinin} } atamaları kullanıcı grubundan kaldır",
+ "delete-dashboard-title": "'{{dashboardTitle}}' isimli kontrol panelini silmek istediğinize emin misiniz?",
+ "delete-dashboard-text": "UYARI: Onaylandıktan sonra kontrol paneli ve ilişkili verileri geri yüklenemez şekilde silinecek.",
+ "delete-dashboards-title": "{ count, select, 1 {1 kontrol panelini} other {# kontrol panelini} } silmek istediğinize emin misiniz?",
+ "delete-dashboards-action-title": "{ count, select, 1 {1 kontrol panelini} other {# kontrol panelini} } sil",
+ "delete-dashboards-text": "UYARI: Onaylandıktan sonra tüm seçili kontrol panelleri ve ilişkili verileri geri yüklenemez şekilde silinecek.",
+ "unassign-dashboard-title": "'{{dashboardTitle}}' isimli kontrol panelindeki atamayı kaldırmak istediğinize emin misiniz?",
+ "unassign-dashboard-text": "Onaylandıktan sonra kontrol panelinin ataması kaldırılacak ve kullanıcı grubu tarafından erişilemez hale gelecektir.",
+ "unassign-dashboard": "Kontrol panelinin ataması kaldır",
+ "unassign-dashboards-title": "{count, select, 1 {1 kontrol panelindeki} other {# kontrol panelindeki} } atamayı kaldırmak istediğinize emin misiniz?",
+ "unassign-dashboards-text": "Onaylandıktan <sonra seçili kontrol panellerinin atamaları kaldırılacak ve kullanıcı grubu tarafından erişilemez hale gelecektir.",
+ "public-dashboard-title": "Kontrol paneli açık hale getirildi",
+ "public-dashboard-text": "Kontrol paneliniz <b>{{dashboardTitle}}</b> açık hale getirildi ve bu <a href='{{publicLink}}' target='_blank'>bağlantıdan</a> erişilebilir durumda",
+ "public-dashboard-notice": "<b>Not:</b> Kontrol panelinden tüm verilere erişebilmek adına ilişkili aygıtları da açık hale getirmeniz gerekmektedir.",
+ "make-private-dashboard-title": "'{{dashboardTitle}}' isimli kontrol panelini özel hale getirmek istediğinize emin misiniz?",
+ "make-private-dashboard-text": "Onaylandıktan sonra kontrol paneli özel hale getirilecek ve başkaları tarafından erişilemez olacak.",
+ "make-private-dashboard": "Kontrol panelini özel hale getir",
+ "socialshare-text": "'{{dashboardTitle}}'",
+ "socialshare-title": "'{{dashboardTitle}}'",
+ "select-dashboard": "Kontrol paneli seç",
+ "no-dashboards-matching": "'{{entity}}' ile eşleşen kontrol paneli bulunamadı.",
+ "dashboard-required": "Kontrol paneli gerekli.",
+ "select-existing": "Var olan bir kontrol paneli seç",
+ "create-new": "Yeni bir kontrol paneli oluştur",
+ "new-dashboard-title": "Yeni kontrol paneli başlığı",
+ "open-dashboard": "Kontrol panelini aç",
+ "set-background": "Arka plan belirle",
"background-color": "Arka plan rengi",
- "background-image": "Arka plan görüntüsü",
- "background-size-mode": "Arka plan boyut modu",
- "no-image": "Görüntü seçilmedi",
- "drop-image": "Bir resim býrakýn veya yüklenecek bir dosya seçmek için týklayýn.",
+ "background-image": "Arka plan resmi",
+ "background-size-mode": "Arka plan boyutu modu",
+ "no-image": "Hiçbir resim seçilmedi",
+ "drop-image": "Bir resim bırakın veya yüklenecek dosyayı seçmek için tıklayın.",
"settings": "Ayarlar",
- "columns-count": "Sütun sayýsý",
- "columns-count-required": "Sütun sayýsý gerekli.",
- "min-columns-count-message": "Sadece 10 minimum sütun sayýsýna izin verilir.",
- "max-columns-count-message": "Sadece maksimum 1000 sütun sayýsýna izin verilir.",
- "widgets-margins": "Widget arasýnda marj",
- "horizontal-margin": "Yatay kenar boþluðu",
- "horizontal-margin-required": "Yatay kenar boþluðu deðeri gerekiyor.",
- "min-horizontal-margin-message": "Minimum yatay kenar boþluðu deðeri olarak yalnýzca 0'a izin verilir.",
- "max-horizontal-margin-message": "Maksimum yatay kenar boþluðu deðeri olarak yalnýzca 50'ye izin verilir.",
- "vertical-margin": "Dikey kenar boþluðu",
- "vertical-margin-required": "Dikey kenar boþluðu deðeri gereklidir.",
- "min-vertical-margin-message": "En az dikey kenar boþluðu deðeri olarak yalnýzca 0'a izin verilir.",
- "max-vertical-margin-message": "Maksimum dikey kenar boþluðu deðeri olarak yalnýzca 50'ye izin verilir.",
- "autofill-height": "Otomatik dolgu düzeni yüksekliði",
- "mobile-layout": "Mobil düzen ayarlarý",
- "mobile-row-height": "Mobil satýr yüksekliði, px",
- "mobile-row-height-required": "Mobil satýr yüksekliði deðeri gerekli.",
- "min-mobile-row-height-message": "Minimum mobil satýr yüksekliði deðeri olarak yalnýzca 5 piksele izin verilir.",
- "max-mobile-row-height-message": "Maksimum mobil satýr yüksekliði deðeri olarak yalnýzca 200 piksele izin verilir.",
- "display-title": "Gösterge tablosu baþlýðý",
- "toolbar-always-open": "Araç çubuðunu açýk tut",
- "title-color": "Baþlýk rengi",
- "display-dashboards-selection": "Gösterge panolarý seçimi",
- "display-entities-selection": "Öðe varlýklarý seçimi",
- "display-dashboard-timewindow": "Zaman penceresi göster",
- "display-dashboard-export": "Görüntülü dýþa aktarma",
- "import": "Gösterge paneli",
- "export": "Dýþ gösterge panosu",
- "export-failed-error": "Gösterge tablosu gönderilemiyor: {{error}}",
- "create-new-dashboard": "Yeni gösterge tablosu oluþtur",
- "dashboard-file": "Gösterge tablosu dosyasý",
- "invalid-dashboard-file-error": "Gösterge tablosu alýnamadý: Geçersiz pano veri yapýsý.",
- "dashboard-import-missing-aliases-title": "Alýnan pano tarafýndan kullanýlan takma adlarý yapýlandýr",
- "create-new-widget": "Yeni pencere öðesi oluþtur",
- "import-widget": "Widget'ý içe aktar",
- "widget-file": "Widget dosyasý",
- "invalid-widget-file-error": "Widget içe aktarýlamýyor: Geçersiz pencere öðesi yapýsý.",
- "widget-import-missing-aliases-title": "Ýçe aktarýlan pencere aracý tarafýndan kullanýlan takma adlarý yapýlandýr",
- "open-toolbar": "Gösterge tablosu araç çubuðunu aç",
- "close-toolbar": "Araç çubuðunu kapat",
- "configuration-error": "Yapýlandýrma hatasý",
- "alias-resolution-error-title": "Gösterge tablosu takma ad hatasý",
- "invalid-aliases-config": "Diðer ad filtrelerinin biriyle eþleþen herhangi bir cihaz bulunamadý. <br/> Lütfen bu sorunu çözmek için yöneticinize baþvurun.",
- "select-devices": "Cihaz seç",
- "assignedToCustomer": "Müþteriye atandý",
- "assignedToCustomers": "Müþterilere atandý",
- "public": "Halka açýk",
- "public-link": "Genel baðlantý",
- "copy-public-link": "Genel baðlantýyý kopyala",
- "public-link-copied-message": "Pano genel baðlantýsý panoya kopyalandý",
- "manage-states": "Gösterge panosu durumlarýný yönet",
- "states": "Gösterge durumu",
- "search-states": "Gösterge panosu durumlarý",
- "selected-states": "{count, çoðul, 1 {1 gösterge tablosu durumu} diðer {# dashboard durumlarý}} seçildi",
- "edit-state": "Gösterge panosu durumunu düzenle",
- "delete-state": "Gösterge panosu durumunu sil",
- "add-state": "Gösterge paneli durumu",
- "state": "Gösterge paneli durumu",
- "state-name": "Ad",
- "state-name-required": "Gösterge panosu durum adý gerekli.",
- "state-id": "Durum Kimliði",
- "state-id-required": "Gösterge durumu kimliði gerekiyor.",
- "state-id-exists": "Ayný kimliðe sahip gösterge tablosu zaten var.",
- "is-root-state": "Kök devlet",
- "delete-state-title": "Gösterge panosu durumunu sil",
- "delete-state-text": "Gösterge panosu durumunu '{{stateName}}' adýyla silmek istediðinizden emin misiniz?",
- "show-details": "Detaylarý göster",
- "hide-details": "Detaylarý gizle",
+ "columns-count": "Kolon sayısı",
+ "columns-count-required": "Kolon sayısı gerekli.",
+ "min-columns-count-message": "Kolon sayısı en az 10 olabilir.",
+ "max-columns-count-message": "Kolon sayısı en fazla 1000 olabilir.",
+ "widgets-margins": "Göstergeler arasındaki aralık",
+ "horizontal-margin": "Yatay aralık",
+ "horizontal-margin-required": "Yatay aralık değeri gerekli.",
+ "min-horizontal-margin-message": "Yatay aralık değeri en az 0 olabilir.",
+ "max-horizontal-margin-message": "Yatay aralık değeri en fazla 50 olabilir.",
+ "vertical-margin": "Dikey aralık",
+ "vertical-margin-required": "Dikey aralık değeri gerekli.",
+ "min-vertical-margin-message": "Dikey aralık değeri en az 0 olabilir.",
+ "max-vertical-margin-message": "Dikey aralık değeri en fazla 50 olabilir.",
+ "autofill-height": "Otomatik doldurma düzeni yüksekliği",
+ "mobile-layout": "Mobil düzen ayarları",
+ "mobile-row-height": "Mobil satır yüksekliği, px",
+ "mobile-row-height-required": "Mobil satır yüksekliği değeri gerekli.",
+ "min-mobile-row-height-message": "Mobil satır yükseliği değeri en az 5 px olabilir.",
+ "max-mobile-row-height-message": "Mobil satır yükseliği değeri en çok 200 px olabilir.",
+ "display-title": "Kontrol paneli başlığını göster",
+ "toolbar-always-open": "Araç çubuğunu her zaman açık tut",
+ "title-color": "Başlık rengi",
+ "display-dashboards-selection": "Kontrol paneli seçimlerinş göster",
+ "display-entities-selection": "Varlık seçimlerini göster",
+ "display-dashboard-timewindow": "Zaman aralığını göster",
+ "display-dashboard-export": "Dışa aktar seçeneğini göster",
+ "import": "Kontrol panelini içe aktar",
+ "export": "Kontrol panelini dışa aktar",
+ "export-failed-error": "Kontrol paneli dışa aktarılamıyor: {{error}}",
+ "create-new-dashboard": "Yeni kontrol paneli oluştur",
+ "dashboard-file": "Kontrol paneli dosyası",
+ "invalid-dashboard-file-error": "Kontrol paneli içe aktarılamadı: Geçersiz kontrol paneli veri yapısı.",
+ "dashboard-import-missing-aliases-title": "İçe aktarılan kontrol paneli tarafından kullanılan aygıt kısa adlarını yapılandırın",
+ "create-new-widget": "Yeni gösterge oluştur",
+ "import-widget": "Göstergeyi içe aktar",
+ "widget-file": "Gösterge dosyası",
+ "invalid-widget-file-error": "Gösterge içe aktarılamadı: Geçersiz gösterge veri yapısı.",
+ "widget-import-missing-aliases-title": "İçe aktarılan gösterge tarafından kullanılan aygıt kısa adlarını yapılandırın",
+ "open-toolbar": "Kontrol paneli araç çubuğunu aç",
+ "close-toolbar": "Araç çubuğunu kapat",
+ "configuration-error": "Yapılandırma hatası",
+ "alias-resolution-error-title": "Kontro paneli kısa adları yapılandırma hatası",
+ "invalid-aliases-config": "Kısa ad filtresiyle eşleşen aygıt bulunamadı.<br/>",
+ "select-devices": "Aygıt seçin",
+ "assignedToCustomer": "Kullanıcı grubuna atandı",
+ "assignedToCustomers": "Kullanıcılara atandı",
+ "public": "Açık",
+ "public-link": "Açık bağlantı",
+ "copy-public-link": "Açık bağlantıyı kopyala",
+ "public-link-copied-message": "Kontrol paneli açık bağlantısı panoya kopyalandı",
+ "manage-states": "Kontrol paneli durumlarını yönet",
+ "states": "Kontrol paneli durumları",
+ "search-states": "Kontrol paneli durumu ara",
+ "selected-states": "{ count, select, 1 {1 kontrol paneli durumu} other {# kontrol paneli durumu} } seçildi",
+ "edit-state": "Kontrol paneli durumu düzenle",
+ "delete-state": "Kontrol paneli durumunu sil",
+ "add-state": "Kontrol paneli durumu ekle",
+ "state": "Kontrol paneli durumu",
+ "state-name": "İsim",
+ "state-name-required": "Kontrol paneli durumu ismi gerekli.",
+ "state-id": "Durum Kimliği",
+ "state-id-required": "Kontrol paneli durum kimliği gerekli.",
+ "state-id-exists": "Aynı kimlikte bir kontrol paneli durumu mevcut.",
+ "is-root-state": "Kök durum",
+ "delete-state-title": "Kontrol paneli durumunu sil",
+ "delete-state-text": "'{{stateName}}' isimli kontrol paneli durumunu silmek istediğinize emin misiniz?",
+ "show-details": "Detayları göster",
+ "hide-details": "Detayları gizle",
"select-state": "Hedef durumu seç",
- "state-controller": "Durum kontrolörü"
+ "state-controller": "Durum denetleyicisi"
},
"datakey": {
"settings": "Ayarlar",
- "advanced": "Ýleri",
+ "advanced": "İleri düzey",
"label": "Etiket",
"color": "Renk",
- "units": "Deðerin yanýnda gösterilecek özel sembol",
- "decimals": "Kayan noktadan sonraki basamak sayýsý",
- "data-generation-func": "Veri oluþturma iþlevi",
- "use-data-post-processing-func": "Veri iþleme sonrasý iþlevini kullan",
- "configuration": "Veri anahtarý yapýlandýrmasý",
+ "units": "Değerin yanında göstermek için özel simge",
+ "decimals": "Noktadan sonraki basamak sayısı",
+ "data-generation-func": "Veri oluşturma fonksiyonu",
+ "use-data-post-processing-func": "Veri işleme sonrası fonksiyonunu kullanın",
+ "configuration": "Veri anahtarı yapılandırması",
"timeseries": "Zaman serisi",
- "attributes": "Öznitellikler",
- "alarm": "Alarm alanlarý",
- "timeseries-required": "Varlýk zamanlamalarý gerekli.",
- "timeseries-or-attributes-required": "Varlýk zaman çizelgeleri / öznitelikler gereklidir.",
- "maximum-timeseries-or-attributes": "Maksimum {count, çoðul, 1 {1 timeseries / attribute.} Diðer {# timeseries / attributes {} izin verilir}}",
- "alarm-fields-required": "Alarm alanlarý gerekli.",
- "function-types": "Ýþlev türleri",
- "function-types-required": "Ýþlev tipleri gereklidir.",
- "maximum-function-types": "Maksimum {sayým, çoðul, 1 {1 iþlev türüne izin verilir.} Diðer {# iþlev türlerine izin verilir}}"
+ "attributes": "Öznitelikler",
+ "alarm": "Alarm alanları",
+ "timeseries-required": "Zaman serisi öğesi gerekli.",
+ "timeseries-or-attributes-required": "Zaman serisi/öznitelikler öğesi gerekli.",
+ "maximum-timeseries-or-attributes": "Maksimum { count, select, 1 {1 zamanserisi/öznitelik kabul edilir.} other {# zamanserisi/öznitelik kabul edilir} }",
+ "alarm-fields-required": "Alarm alanları gerekli.",
+ "function-types": "Fonksiyon türleri",
+ "function-types-required": "Fonksiyon türleri gerekli.",
+ "maximum-function-types": "Maksimum { count, select, 1 {1 fonksiyon türü kabul edilir.} other {# fonksiyon türü kabul edilir} }"
},
"datasource": {
- "type": "Veri kaynaðý türü",
- "name": "Ad",
- "add-datasource-prompt": "Lütfen veri kaynaðý ekle"
+ "type": "Veri kaynağı türü",
+ "name": "İsim",
+ "add-datasource-prompt": "Lütfen veri kaynağı ekleyin"
},
"details": {
"edit-mode": "Düzenleme modu",
- "toggle-edit-mode": "Düzenleme modunu deðiþtir"
+ "toggle-edit-mode": "Düzenleme modunu aç/kapat"
},
"device": {
- "device": "Cihaz",
- "device-required": "Cihaz gerekli.",
- "devices": "Cihazlar",
- "management": "Cihaz yönetimi",
- "view-devices": "Cihazlarý Görüntüle",
- "device-alias": "Cihaz takma adý",
- "aliases": "Cihaz takma adlarý",
- "no-alias-matching": "'{{alias}} bulunamadý. ",
- "no-aliases-found": "Takma ad bulunamadý",
- "no-key-matching": "'{{anahtar bulunamadý.",
- "no-keys-found": "Anahtar bulunamadý.",
- "create-new-alias": "Yeni bir tane oluþtur!",
- "create-new-key": "Yeni bir tane oluþtur!",
- "duplicate-alias-error": "Yinelenen takma ad bulundu {{alias}}.. <br> Cihaz takma adlarý, kontrol panelinde benzersiz olmalýdýr. ",
- "configure-alias": "Yapýlandýrma {{alias}} takma ad",
- "no-devices-matching": "{{Entity}} ile eþleþen hiçbir cihaz bulunamadý. ",
- "alias": "Alias",
- "alias-required": "Cihaz takma adý gerekiyor.",
- "remove-alias": "Cihaz takma adýný kaldýr",
- "add-alias": "Cihaz takma adý ekle",
- "name-starts-with": "Cihaz adý ile baþlýyor",
- "device-list": "Aygýt listesi",
+ "device": "Aygıt",
+ "device-required": "Aygıt gerekli.",
+ "devices": "Aygıtlar",
+ "management": "Aygıt Yönetimi",
+ "view-devices": "Aygıtları görüntüle",
+ "device-alias": "Aygıt kısa adı",
+ "aliases": "Aygıt kısa adları",
+ "no-alias-matching": "'{{alias}}' bulunamadı.",
+ "no-aliases-found": "Hiçbir kısa ad bulunamadı.",
+ "no-key-matching": "'{{key}}' bulunamadı.",
+ "no-keys-found": "Hiçbir anahtar bulunamadı.",
+ "create-new-alias": "Yeni bir tane oluştur!",
+ "create-new-key": "Yeni bir tane oluştur!",
+ "duplicate-alias-error": "'{{alias}}' daha önce kaydedilmiş.<br>Aygıt kısa adları kontrol paneli özelinde emsalsiz olmalıdır.",
+ "configure-alias": "'{{alias}}' kısa adını yapılandırın",
+ "no-devices-matching": "'{{entity}}' ile eşleşen aygıt bulunamadı.",
+ "alias": "Kısa ad",
+ "alias-required": "Aygıt kısa adı gerekli.",
+ "remove-alias": "Aygıt kısa adını kaldır",
+ "add-alias": "Aygıt kısa adı ekle",
+ "name-starts-with": "... ile başlayan aygıt adı",
+ "device-list": "Aygıt listesi",
"use-device-name-filter": "Filtre kullan",
- "device-list-empty": "Cihaz seçilmedi.",
- "device-name-filter-required": "Cihaz adý filtresi gerekli.",
- "device-name-filter-no-device-matched": "{{Device}} ile baþlayan hiçbir cihaz bulunamadý. ",
- "add": "Cihaz ekle",
- "assign-to-customer": "Müþteriye atama",
- "assign-device-to-customer": "Aygýtý / Aygýtlarý Müþteriye Atama",
- "assign-device-to-customer-text": "Lütfen müþteriye atamak istediðiniz cihazlarý seçin",
- "make-public": "Cihazý herkese açýk yap",
- "make-private": "Cihazý özel yap",
- "no-devices-text": "Hiçbir cihaz bulunamadý",
- "assign-to-customer-text": "Lütfen cihazý atamak için müþteriyi seçin",
- "device-details": "Cihaz detaylarý",
- "add-device-text": "Yeni cihaz ekle",
+ "device-list-empty": "Hiçbir aygıt seçilmedi.",
+ "device-name-filter-required": "Aygıt adı filtresi gerekli.",
+ "device-name-filter-no-device-matched": "'{{device}}' ile başlayan herhangi bir aygıt bulunamadı.",
+ "add": "Aygıt ekle",
+ "assign-to-customer": "Kullanıcı grubuna ata",
+ "assign-device-to-customer": "Aygıt(lar)ı Kullanıcı Grubuna Ata",
+ "assign-device-to-customer-text": "Lütfen kullanıcı grubuna atanacak aygıtları seçin",
+ "make-public": "Aygıtı açık hale getir",
+ "make-private": "Aygıtı gizli hale getir",
+ "no-devices-text": "Hiçbir aygıt bulunamadı",
+ "assign-to-customer-text": "Lütfen aygıt(lar)ı atayacak kullanıcı grubu seçin",
+ "device-details": "Aygıt detayları",
+ "add-device-text": "Yeni aygıt ekle",
"credentials": "Kimlik bilgileri",
"manage-credentials": "Kimlik bilgilerini yönet",
- "delete": "Cihazý sil",
- "assign-devices": "Aygýtlarý atama",
- "assign-devices-text": "Müþteriye {count, çoðul, 1 {1 cihaz} diðer {# devices}} atayýn ",
- "delete-devices": "Cihazlarý sil",
- "unassign-from-customer": "Müþteriden atama",
- "unassign-devices": "Atanmamýþ cihazlarý",
- "unassign-devices-action-title": "Müþteriden atayýn, çoðul, 1 {1 cihaz} diðer {# devices}} atama ",
- "assign-new-device": "Yeni cihaz atama",
- "make-public-device-title": "Cihazý {{deviceName}} herkese açýk yapmak istediðinizden emin misiniz?",
- "make-public-device-text": "Onaydan sonra cihaz ve tüm verileri kamuya açýk ve baþkalarý tarafýndan eriþilebilir olacak.",
- "make-private-device-title": "Cihazý {{deviceName}} özel yapmak istediðinizden emin misiniz?",
- "make-private-device-text": "Onaylandýktan sonra cihaz ve tüm verileri gizli tutulacak ve baþkalarý tarafýndan eriþilemeyecektir.",
+ "delete": "Aygıt sil",
+ "assign-devices": "Aygıt ata",
+ "assign-devices-text": "{ count, select, 1 {1 aygıtı} other {# aygıtı} } kullanıcı grubuna ata",
+ "delete-devices": "Aygıtları sil",
+ "unassign-from-customer": "Kullanıcı Grubundan atamayı kaldır",
+ "unassign-devices": "Aygıtlardan atamayı kaldır",
+ "unassign-devices-action-title": "{ count, select, 1 {1 aygıtın} other {# aygıtın} } atamasını kullanıcı grubundan kaldır",
+ "assign-new-device": "Yeni aygıt ata",
+ "make-public-device-title": "'{{deviceName}}' isimli aygıtı açık hale getirmek istediğinizden emin misiniz?",
+ "make-public-device-text": "Onaylandıktan sonra aygıt ve verileri açık hale getirilecek ve diğerleri tarafından erişilebilir olacak.",
+ "make-private-device-title": "'{{deviceName}}' isimli aygıtı gizli hale getirmek istediğinizden emin misiniz?",
+ "make-private-device-text": "Onaylandıktan sonra aygıt ve verileri gizli hale getirilecek ve diğerleri tarafından erişilemez olacak.",
"view-credentials": "Kimlik bilgilerini görüntüle",
- "delete-device-title": "Cihazý {{deviceName}} silmek istediðinizden emin misiniz? ",
- "delete-device-text": "Dikkatli olun, onaylamadan sonra cihaz ve tüm ilgili veriler kurtarýlamaz.",
- "delete-devices-title": "{Count, çoðul, 1 {1 cihaz} diðer {# devices}} silmek istediðinizden emin misiniz?",
- "delete-devices-action-title": "Sil {count, çoðul, 1 {1 cihaz} diðer {# devices}}",
- "delete-devices-text": "Dikkatli olun, onaylandýktan sonra tüm seçilen cihazlar silinecek ve ilgili tüm veriler kurtarýlamayacaktýr.",
- "unassign-device-title": "Cihazýn atamasýný kaldýrmak istediðinizden emin misiniz? {{DeviceName}} ? ",
- "unassign-device-text": "Onaydan sonra cihaz atanmamýþ olacak ve müþteri tarafýndan eriþilemeyecektir.",
- "unassign-device": "Atanmamýþ cihaz",
- "unassign-devices-title": "Sayým, çoðul, 1 {1 cihaz} diðer {# devices}} atama atamak istediðinizden emin misiniz?",
- "unassign-devices-text": "Onaylandýktan sonra tüm seçilen cihazlar atanmamýþ olacak ve müþteri tarafýndan eriþilemeyecektir.",
- "device-credentials": "Cihaz Kimlik Bilgileri",
- "credentials-type": "Kimlik bilgileri türü",
- "access-token": "Eriþim belirteci",
- "access-token-required": "Eriþim belirteci gerekli.",
- "access-token-invalid": "Eriþim belirteci uzunluðu 1 ile 20 karakter arasýnda olmalýdýr.",
- "rsa-key": "RSA ortak anahtarý",
- "rsa-key-required": "RSA ortak anahtarý gerekli.",
- "secret": "Gizli",
- "secret-required": "Gizli gerekli",
- "device-type": "Cihaz tipi",
- "device-type-required": "Cihaz tipi gerekli.",
- "select-device-type": "Cihaz türünü seç",
- "enter-device-type": "Cihaz türünü girin",
- "any-device": "Herhangi bir cihaz",
- "no-device-types-matching": "{{EntitySubtype}} ile eþleþen cihaz türü bulunamadý. ",
- "device-type-list-empty": "Hiçbir cihaz türü seçilmedi.",
- "device-types": "Cihaz türleri",
- "name": "Ad",
- "name-required": "Ýsim gerekli.",
- "description": "Açýklama",
- "events": "Etkinlikler",
- "details": "Ayrýntýlar",
- "copyId": "Cihaz kimliðini kopyala",
- "copyAccessToken": "Eriþim belirteci kopyala",
- "idCopiedMessage": "Cihaz Kimliði panoya kopyalandý",
- "accessTokenCopiedMessage": "Cihaz eriþim belirteci panoya kopyalandý",
- "assignedToCustomer": "Müþteriye atandý",
- "unable-delete-device-alias-title": "Cihaz takma adý silinemiyor",
- "unable-delete-device-alias-text": "Cihaz takma adý {{deviceAlias}} ', þu widget (lar) tarafýndan kullanýldýðý þekliyle silinemiyor: <br/> {{widgetsList}} ",
- "is-gateway": "Að geçidi",
- "public": "Halka açýk",
- "device-public": "Cihaz herkese açýk",
- "select-device": "Cihaz seç"
+ "delete-device-title": "'{{deviceName}}' isimli aygıtı silmek istediğinize emin misiniz?",
+ "delete-device-text": "UYARI: Onaylandıktan sonra aygıt ve ilişkili verileri geri yüklenemez şekilde silinecek.",
+ "delete-devices-title": "{ count, select, 1 {1 aygıtı} other {# aygıtı} } silmek istediğinize emin misiniz?",
+ "delete-devices-action-title": "{ count, select, 1 {1 aygıtı} other {# aygıtı} } sil",
+ "delete-devices-text": "UYARI: Onaylandıktan sonra tüm seçili aygıtlar ve ilişkili verileri geri yüklenemez şekilde silinecek.",
+ "unassign-device-title": "'{{deviceName}}' isimli aygıtın atamasını kaldırmak istediğinize emin misiniz?",
+ "unassign-device-text": "Onaylandıktan sonra aygıtın ataması kaldırılacak ve kullanıcı grubu tarafından erişilemez olacak.",
+ "unassign-device": "Aygıt atamasını kaldır",
+ "unassign-devices-title": "{ count, select, 1 {1 aygıtın} other {# aygıtın} } atamasını kaldırmak istediğinize emin misiniz?",
+ "unassign-devices-text": "Onaylandıktan sonra seçili aygıtların atamaları kaldırılacak ve kullanıcı grubu tarafından erişilemez olacak.",
+ "device-credentials": "Aygıt Kimlik Bilgileri",
+ "credentials-type": "Kimlik Bilgi Türü",
+ "access-token": "Erişim şifresi",
+ "access-token-required": "Erişim şifresi gerekli.",
+ "access-token-invalid": "Erişim şifresi uzunluğu 1 ile 20 karakter arasında olmalıdır.",
+ "rsa-key": "RSA açık anahtarı",
+ "rsa-key-required": "RSA açık anahtarı gerekli.",
+ "secret": "Secret",
+ "secret-required": "Secret gerekli.",
+ "device-type": "Aygıt Türü",
+ "device-type-required": "Aygıt türü gereli.",
+ "select-device-type": "Aygıt türü seç",
+ "enter-device-type": "Aygıt türü gir",
+ "any-device": "Herhangi bir aygıt",
+ "no-device-types-matching": "'{{entitySubtype}}' ile eşleşen aygıt türü bulunamadı.",
+ "device-type-list-empty": "Hiçbir aygıt türü seçilmedi.",
+ "device-types": "Aygıt türleri",
+ "name": "İsim",
+ "name-required": "İsim gerekli.",
+ "description": "Açıklama",
+ "events": "Olaylar",
+ "details": "Detaylar",
+ "copyId": "Aygıt kimliğini kopyala",
+ "copyAccessToken": "Erişim şifresini kopyala",
+ "idCopiedMessage": "Aygıt kimliği panoya kopyalandı.",
+ "accessTokenCopiedMessage": "Aygıt erişim şifresi panoya kopyalandı",
+ "assignedToCustomer": "Kullanıcı Grubuna atandı",
+ "unable-delete-device-alias-title": "Aygıt kısa adı silinemedi",
+ "unable-delete-device-alias-text": "Aygıt kısa adı('{{deviceAlias}}'), şu göstergeler tarafından kullanıldığı için silinemedi:<br/>{{widgetsList}}",
+ "is-gateway": "Ağ geçidi mi?",
+ "public": "Açık",
+ "device-public": "Aygıt açık",
+ "select-device": "Aygıt seç"
},
"dialog": {
- "close": "Ýletiþim kutusunu kapat"
+ "close": "Kapat"
},
"error": {
- "unable-to-connect": "Sunucuya baðlanýlamýyor! Lütfen Ýnternet baðlantýnýzý kontrol edin.",
- "unhandled-error-code": "Ýþlenmemiþ hata kodu: {{errorCode}}",
+ "unable-to-connect": "Sunucuya bağlanamadı! Lütfen internet bağlantınızı kontrol edin.",
+ "unhandled-error-code": "İşlenmeyen hata koud: {{errorCode}}",
"unknown-error": "Bilinmeyen hata"
},
"entity": {
- "entity": "Varlýk",
- "entities": "Varlýklarý",
- "aliases": "Varlýk takma adlarý",
- "entity-alias": "Varlýk takma adý",
- "unable-delete-entity-alias-title": "Varlýk takma adý silinemiyor",
- "unable-delete-entity-alias-text": "Varlýk takma adý {{entityAlias}} ', þu widget (lar) tarafýndan kullanýldýðý þekliyle silinemez: <br/> {{widgetsList}} ",
- "duplicate-alias-error": "Yinelenen takma ad bulundu {{alias}} '... Entity takma adlar, gösterge panosunda benzersiz olmalýdýr. ",
- "missing-entity-filter-error": "Diðer adlar için filtre eksik {{alias}}. ",
- "configure-alias": "Yapýlandýrma {{alias}} takma ad",
- "alias": "Alias",
- "alias-required": "Varlýk takma adý gerekiyor.",
- "remove-alias": "Varlýk takma adýný kaldýrma",
- "add-alias": "Varlýk takma adý ekle",
- "entity-list": "Varlýk listesi",
- "entity-type": "Varlýk türü",
- "entity-types": "Varlýk türleri",
- "entity-type-list": "Varlýk türü listesi",
- "any-entity": "Herhangi bir varlýk",
- "enter-entity-type": "Varlýk türü girin",
- "no-entities-matching": "{{Entity}} ile eþleþen hiçbir varlýk bulunamadý. ",
- "no-entity-types-matching": "{{EntityType}} ile eþleþen hiçbir varlýk türü bulunamadý. ",
- "name-starts-with": "Ýsim ile baþlar",
+ "entity": "Öğe",
+ "entities": "Öğeler",
+ "aliases": "Öğe kısa adları",
+ "entity-alias": "Öğe kısa adı",
+ "unable-delete-entity-alias-title": "Öğe kısa adı silinemedi",
+ "unable-delete-entity-alias-text": "Öğe kısa adı('{{entityAlias}}'), şu göstergeler tarafından kullanıldığı için silinemiyor:<br/>{{widgetsList}}",
+ "duplicate-alias-error": "'{{alias}}' daha önce kaydedilmiş.<br>Öğe kısa adları kontrol paneli özelinde emsalsiz olmalı.",
+ "missing-entity-filter-error": "'{{alias}}' için filtre bulunmuyor.",
+ "configure-alias": "'{{alias}}' kısa adını yapılandır",
+ "alias": "Kısa ad",
+ "alias-required": "Öğe kısa adı gerekli.",
+ "remove-alias": "Öğe kısa adını kaldır",
+ "add-alias": "Öğe kısa adı ekle",
+ "entity-list": "Öğe listesi",
+ "entity-type": "Öğe türü",
+ "entity-types": "Öğe türleri",
+ "entity-type-list": "Öğe türü listesi",
+ "any-entity": "Herhangi bir öğe",
+ "enter-entity-type": "Öğe türü girin",
+ "no-entities-matching": "'{{entity}}' ile eşleşen öğe bulunamadı.",
+ "no-entity-types-matching": "'{{entityType}}' ile eşleşen öğe türü bulunamadı.",
+ "name-starts-with": "... ile başlayan isim",
"use-entity-name-filter": "Filtre kullan",
- "entity-list-empty": "Hiçbir varlýk seçilmedi.",
- "entity-type-list-empty": "Hiçbir varlýk türü seçilmedi.",
- "entity-name-filter-required": "Varlýk adý filtresi gerekli.",
- "entity-name-filter-no-entity-matched": "{{Entity}} ile baþlayan hiçbir varlýk bulunamadý. ",
- "all-subtypes": "Herþey",
- "select-entities": "Öðeleri seç",
- "no-aliases-found": "Takma ad bulunamadý",
- "no-alias-matching": "'{{alias}} bulunamadý. ",
- "create-new-alias": "Yeni bir tane oluþtur!",
+ "entity-list-empty": "Hiçbir öğe seçilmedi.",
+ "entity-type-list-empty": "Hiçbir öğe türü seçilmedi.",
+ "entity-name-filter-required": "Öğe ismi filtresi gerekli.",
+ "entity-name-filter-no-entity-matched": "'{{entity}}' ile başlayan hiçbir öğe bulunamadı.",
+ "all-subtypes": "Tümü",
+ "select-entities": "Öğeleri seç",
+ "no-aliases-found": "Hiçbir kısa ad bulunamadı.",
+ "no-alias-matching": "'{{alias}}' bulunamadı.",
+ "create-new-alias": "Yeni bir tane oluştur!",
"key": "Anahtar",
- "key-name": "Anahtar adý",
- "no-keys-found": "Anahtar bulunamadý.",
- "no-key-matching": "'{{anahtar bulunamadý.",
- "create-new-key": "Yeni bir tane oluþtur!",
+ "key-name": "Anahtar adı",
+ "no-keys-found": "Hiçbir anahtar bulunamadı.",
+ "no-key-matching": "'{{key}}' bulunamadı.",
+ "create-new-key": "Yeni bir tane oluştur!",
"type": "Tür",
- "type-required": "Varlýk türü gerekli.",
- "type-device": "Cihaz",
- "type-devices": "Cihazlar",
- "list-of-devices": "{sayým, çoðul, 1 {Bir cihaz} diðer {# cihazlarýn listesi}}",
- "device-name-starts-with": "Ýsimleri '{{prefix}} ile baþlayan cihazlar ",
- "type-asset": "Varlýk",
- "type-assets": "Varlýklar",
- "list-of-assets": "{count, plural, 1 {One asset} diðer {# asset}}",
- "asset-name-starts-with": "Adlarý {{prefix}} ile baþlayan varlýklar ",
- "type-entity-view": "Varlýk Görünümü",
- "type-entity-views": "Varlýk Görünümleri",
- "list-of-entity-views": "{count, çoðul, 1 {Bir varlýk görünümü} diðer {# varlýk görüntüleme}} listesi",
- "entity-view-name-starts-with": "Adý {{önek}} ile baþlayan varlýk görünümleri",
+ "type-required": "Öğe türü gerekli.",
+ "type-device": "Aygıt",
+ "type-devices": "Aygıtlar",
+ "list-of-devices": "{ count, select, 1 {Bir aygıt} other {# Aygıtın Listesi} }",
+ "device-name-starts-with": "İsimleri '{{prefix}}' ile başlayan aygıtlar",
+ "type-asset": "Varlık",
+ "type-assets": "Varlıklar",
+ "list-of-assets": "{ count, select, 1 {Bir varlık} other {# Varlığın Listesi} }",
+ "asset-name-starts-with": "İsmi '{{prefix}}' ile başlayan varlıklar",
+ "type-entity-view": "Varlık Görünümü",
+ "type-entity-views": "Varlık Görünümleri",
+ "list-of-entity-views": "{count, çoğul, 1 {Bir varlık görünümü} diğer {# varlık görüntüleme}} listesi",
+ "entity-view-name-starts-with": "Adı {{önek}} ile başlayan varlık görünümleri",
"type-rule": "Kural",
"type-rules": "Kurallar",
- "list-of-rules": "{count, çoðul, 1 {Bir kural} diðer {# kurallarýn}} listesi",
- "rule-name-starts-with": "Ýsimleri {{prefix}} ile baþlayan kurallar",
+ "list-of-rules": "{ count, select, 1 {Bir kural} other {# Kuralın Listesi} }",
+ "rule-name-starts-with": "İsmi '{{prefix}}' ile başlayan kurallar",
"type-plugin": "Eklenti",
"type-plugins": "Eklentiler",
- "list-of-plugins": "{count, çoðul, 1 {Bir eklenti} diðer {# eklenti listesi}}",
- "plugin-name-starts-with": "Ýsimleri {{prefix}} ile baþlayan eklentiler",
- "type-tenant": "Kiracý",
- "type-tenants": "Kiracýlar",
- "list-of-tenants": "{count, çoðul, 1 {Bir kiracý} diðer {# kiracýlarýn listesi}}",
- "tenant-name-starts-with": "Ýsimleri {{prefix}} ile baþlayan kiracýlar, ",
- "type-customer": "Müþteri",
- "type-customers": "Müþteriler",
- "list-of-customers": "{count, çoðul, 1 {Bir müþteri} diðer {# müþteri}} listesi",
- "customer-name-starts-with": "Ýsimleri {{prefix}} ile baþlayan müþteriler,",
- "type-user": "Kullanýcý",
- "type-users": "Kullanýcýlar",
- "list-of-users": "{count, çoðul, 1 {Bir kullanýcý} diðer {# user}} listesi",
- "user-name-starts-with": "Ýsimleri {{prefix}} ile baþlayan kullanýcýlar",
- "type-dashboard": "Pano",
- "type-dashboards": "Gösterge tablolarý",
- "list-of-dashboards": "{count, çoðul, 1 {Bir pano} Diðer {# panolarýn}}} listesi",
- "dashboard-name-starts-with": "Ýsimleri {{prefix}} ile baþlayan panolar",
+ "list-of-plugins": "{ count, select, 1 {Bir eklenti} other {# Eklentinin Listesi} }",
+ "plugin-name-starts-with": "İsmi '{{prefix}}' ile başlayan eklentiler",
+ "type-tenant": "Tenant",
+ "type-tenants": "Tenantlar",
+ "list-of-tenants": "{ count, select, 1 {Bir tenant} other {# Tenantın Listesi} }",
+ "tenant-name-starts-with": "İsmi '{{prefix}}' ile başlayan tenantlar",
+ "type-customer": "Kullanıcı Grubu",
+ "type-customers": "Kullanıcı Grupları",
+ "list-of-customers": "{ count, select, 1 {Bir Kullanıcı Grubu} other {# Kullanıcı Grupları} }",
+ "customer-name-starts-with": "İsmi '{{prefix}}' ile başlayan Kullanıcı Grupları",
+ "type-user": "Kullanıcı",
+ "type-users": "Kullanıcılar",
+ "list-of-users": "{ count, select, 1 {Bir kullanıcı} other {# Kullanıcının Listesi} }",
+ "user-name-starts-with": "İsmi '{{prefix}}' ile başlayan kullanıcılar",
+ "type-dashboard": "Kontrol paneli",
+ "type-dashboards": "Kontrol panelleri",
+ "list-of-dashboards": "{ count, select, 1 {Bir kontrol paneli} other {# Kontrol Panelinin Listesi} }",
+ "dashboard-name-starts-with": "İsmi '{{prefix}}' ile başlayan kontrol panelleri",
"type-alarm": "Alarm",
"type-alarms": "Alarmlar",
- "list-of-alarms": "{count, çoðul, 1 {Bir alarm} diðer {{# alarm}} listesi",
- "alarm-name-starts-with": "Ýsimleri {{prefix}} ile baþlayan alarmlar",
+ "list-of-alarms": "{ count, select, 1 {Bir alarm} other {# Alarmın Listesi} }",
+ "alarm-name-starts-with": "İsmi '{{prefix}}' ile başlayan alarmlar",
"type-rulechain": "Kural zinciri",
"type-rulechains": "Kural zincirleri",
- "list-of-rulechains": "{count, çoðul, 1 {Bir kural zinciri} diðer {# kural zincirinin listesi}}",
- "rulechain-name-starts-with": "Ýsimleri {{prefix}} ile baþlayan kural zincirleri",
- "type-rulenode": "Kural düðümü",
- "type-rulenodes": "Kural düðümleri",
- "list-of-rulenodes": "{count, çoðul, 1 {Bir kural node} diðer {# kural düðümünün listesi}}",
- "rulenode-name-starts-with": "Ýsimleri '{{prefix}} ile baþlayan kural düðümleri",
- "type-current-customer": "Mevcut Müþteri",
- "search": "Varlýklar ara",
- "selected-entities": "{count, çoðul, 1 {1 varlýk} diðer {# entities}} seçildi",
- "entity-name": "Varlýk adý",
- "details": "Varlýk ayrýntýlarý",
- "no-entities-prompt": "Hiçbir varlýk bulunamadý",
- "no-data": "Gösterilecek bilgi yok"
+ "list-of-rulechains": "{count, çoğul, 1 {Bir kural zinciri} diğer {# kural zincirinin listesi}}",
+ "rulechain-name-starts-with": "İsimleri {{prefix}} ile başlayan kural zincirleri",
+ "type-rulenode": "Kural düğümü",
+ "type-rulenodes": "Kural düğümleri",
+ "list-of-rulenodes": "{count, çoğul, 1 {Bir kural node} diğer {# kural düğümünün listesi}}",
+ "rulenode-name-starts-with": "İsimleri '{{prefix}} ile başlayan kural düğümleri",
+ "type-current-customer": "Mevcut Müşteri",
+ "search": "Öğeleri ara",
+ "selected-entities": "{ count, select, 1 {1 öğe} other {# öğe} } seçildi",
+ "entity-name": "Öğe adı",
+ "details": "Öğe detayları",
+ "no-entities-prompt": "Hiçbir öğe bulunamadı",
+ "no-data": "Görüntülenecek veri yok"
},
"entity-view": {
- "entity-view": "Varlýk Görünümü",
- "entity-views": "Varlýk Görünümleri",
- "management": "Varlýk Görünümü yönetimi",
- "view-entity-views": "Varlýk Görünümlerini Görüntüle",
- "entity-view-alias": "Varlýk Görünümü takma adý",
- "aliases": "Varlýk Görünümü takma adlarý",
- "no-alias-matching": "'{{alias}} bulunamadý. ",
- "no-aliases-found": "Takma ad bulunamadý",
- "no-key-matching": "'{{anahtar bulunamadý.",
- "no-keys-found": "Anahtar bulunamadý.",
- "create-new-alias": "Yeni bir tane oluþtur!",
- "create-new-key": "Yeni bir tane oluþtur!",
- "duplicate-alias-error": "Yinelenen takma ad bulundu {{alias}} '.. Entity View diðer adlar, gösterge panosunda benzersiz olmalýdýr. ",
- "configure-alias": "Yapýlandýrma {{alias}} takma ad",
- "no-entity-views-matching": "{{Entity}} ile eþleþen hiçbir varlýk yorumu bulunamadý. ",
+ "entity-view": "Varlık Görünümü",
+ "entity-views": "Varlık Görünümleri",
+ "management": "Varlık Görünümü yönetimi",
+ "view-entity-views": "Varlık Görünümlerini Görüntüle",
+ "entity-view-alias": "Varlık Görünümü takma adı",
+ "aliases": "Varlık Görünümü takma adları",
+ "no-alias-matching": "'{{alias}} bulunamadı. ",
+ "no-aliases-found": "Takma ad bulunamadı",
+ "no-key-matching": "'{{anahtar bulunamadı.",
+ "no-keys-found": "Anahtar bulunamadı.",
+ "create-new-alias": "Yeni bir tane oluştur!",
+ "create-new-key": "Yeni bir tane oluştur!",
+ "duplicate-alias-error": "Yinelenen takma ad bulundu {{alias}} '.. Entity View diğer adlar, gösterge panosunda benzersiz olmalıdır. ",
+ "configure-alias": "Yapılandırma {{alias}} takma ad",
+ "no-entity-views-matching": "{{entity}} ile eşleşen hiçbir varlık yorumu bulunamadı. ",
"alias": "Alias",
- "alias-required": "Varlýk Görünümü takma adý gerekiyor.",
- "remove-alias": "Varlýk görünümü takma adýný kaldýr",
- "add-alias": "Varlýk görünümü takma adý ekle",
- "name-starts-with": "Varlýk Görünümü adý ile baþlýyor",
- "entity-view-list": "Varlýk Görünümü listesi",
+ "alias-required": "Varlık Görünümü takma adı gerekiyor.",
+ "remove-alias": "Varlık görünümü takma adını kaldır",
+ "add-alias": "Varlık görünümü takma adı ekle",
+ "name-starts-with": "Varlık Görünümü adı ile başlıyor",
+ "entity-view-list": "Varlık Görünümü listesi",
"use-entity-view-name-filter": "Filtre kullan",
- "entity-view-list-empty": "Hiçbir varlýk görüþü seçilmedi.",
- "entity-view-name-filter-required": "Varlýk görünüm adý filtresi gerekli.",
- "entity-view-name-filter-no-entity-view-matched": "{{EntityView}} ile baþlayan hiçbir varlýk sayýsý bulunamadý.",
- "add": "Varlýk Görünümü Ekle",
- "assign-to-customer": "Müþteriye atama",
- "assign-entity-view-to-customer": "Varlýk Görünümlerini Müþteriye Atama",
- "assign-entity-view-to-customer-text": "Lütfen müþteriye atamak için varlýk görünümlerini seçin",
- "no-entity-views-text": "Varlýk görüþü bulunamadý",
- "assign-to-customer-text": "Lütfen varlýk görünümlerini atamak için müþteriyi seçin",
- "entity-view-details": "Varlýk görünümü ayrýntýlarý",
- "add-entity-view-text": "Yeni varlýk görünümü ekle",
- "delete": "Varlýk görünümünü sil",
- "assign-entity-views": "Varlýk görünümleri atama",
- "assign-entity-views-text": "Müþteriye {count, çoðul, 1 {1 entityView} diðer {# entityViews}} atayýn ",
- "delete-entity-views": "Varlýk görünümlerini sil",
- "unassign-from-customer": "Müþteriden atama",
- "unassign-entity-views": "Varlýk görünümlerini atama",
- "unassign-entity-views-action-title": "Müþteriden atama sayým, çoðul, 1 {1 entityView} diðer {# entityViews}}",
- "assign-new-entity-view": "Yeni varlýk görünümü atama",
- "delete-entity-view-title": "Varlýk görünümünü silmek istediðinizden emin misiniz?, {{EntityViewName}} '? ",
- "delete-entity-view-text": "Dikkatli olun, onaylandýktan sonra varlýk görünümü ve ilgili tüm veriler kurtarýlamayacak.",
- "delete-entity-views-title": "{Count, çoðul, 1 {1 entityView} diðer {# entityViews}} varlýk görünümüne sahip olmak istediðinizden emin misiniz?",
- "delete-entity-views-action-title": "Sil {count, çoðul, 1 {1 entityView} diðer {# entityViews}}",
- "delete-entity-views-text": "Dikkatli olun, onaylandýktan sonra tüm seçilen görünümler kaldýrýlacak ve ilgili tüm veriler kurtarýlamayacaktýr.",
- "unassign-entity-view-title": "Varlýk görünümünün atamasýný kaldýrmak istediðinizden emin misiniz? {{EntityViewName}} '? ",
- "unassign-entity-view-text": "Onaydan sonra varlýk görünümü atanmamýþ olacak ve müþteri tarafýndan eriþilemeyecektir.",
- "unassign-entity-view": "Varlýk görünümünün atamasýný kaldýr",
- "unassign-entity-views-title": "Sayým, çoðul, 1 {1 entityView} diðer {# entityViews}} hesabýnýn atamasýný kaldýrmak istediðinizden emin misiniz?",
- "unassign-entity-views-text": "Onaylandýktan sonra, seçilen tüm öðe görünümleri atamadan kaldýrýlacak ve müþteri tarafýndan eriþilemeyecektir.",
- "entity-view-type": "Varlýk Görünümü türü",
- "entity-view-type-required": "Varlýk Görünümü türü gerekli.",
- "select-entity-view-type": "Varlýk görüntüleme türünü seç",
- "enter-entity-view-type": "Varlýk görüntüleme türünü girin",
- "any-entity-view": "Herhangi bir varlýk görünümü",
- "no-entity-view-types-matching": "{{EntitySubtype}} ile eþleþen hiçbir varlýk görüntüleme türü bulunamadý. ",
- "entity-view-type-list-empty": "Hiçbir varlýk görünümü türü seçilmemiþ.",
- "entity-view-types": "Varlýk Görünümü türleri",
+ "entity-view-list-empty": "Hiçbir varlık görüşü seçilmedi.",
+ "entity-view-name-filter-required": "Varlık görünüm adı filtresi gerekli.",
+ "entity-view-name-filter-no-entity-view-matched": "{{entityView}} ile başlayan hiçbir varlık sayısı bulunamadı.",
+ "add": "Varlık Görünümü Ekle",
+ "assign-to-customer": "Müşteriye atama",
+ "assign-entity-view-to-customer": "Varlık Görünümlerini Müşteriye Atama",
+ "assign-entity-view-to-customer-text": "Lütfen müşteriye atamak için varlık görünümlerini seçin",
+ "no-entity-views-text": "Varlık görüşü bulunamadı",
+ "assign-to-customer-text": "Lütfen varlık görünümlerini atamak için müşteriyi seçin",
+ "entity-view-details": "Varlık görünümü ayrıntıları",
+ "add-entity-view-text": "Yeni varlık görünümü ekle",
+ "delete": "Varlık görünümünü sil",
+ "assign-entity-views": "Varlık görünümleri atama",
+ "assign-entity-views-text": "Müşteriye {count, çoğul, 1 {1 entityView} diğer {# entityViews}} atayın ",
+ "delete-entity-views": "Varlık görünümlerini sil",
+ "unassign-from-customer": "Müşteriden atama",
+ "unassign-entity-views": "Varlık görünümlerini atama",
+ "unassign-entity-views-action-title": "Müşteriden atama sayım, çoğul, 1 {1 entityView} diğer {# entityViews}}",
+ "assign-new-entity-view": "Yeni varlık görünümü atama",
+ "delete-entity-view-title": "Varlık görünümünü silmek istediğinizden emin misiniz?, {{entityViewName}} '? ",
+ "delete-entity-view-text": "Dikkatli olun, onaylandıktan sonra varlık görünümü ve ilgili tüm veriler kurtarılamayacak.",
+ "delete-entity-views-title": "{count, çoğul, 1 {1 entityView} diğer {# entityViews}} varlık görünümüne sahip olmak istediğinizden emin misiniz?",
+ "delete-entity-views-action-title": "Sil {count, çoğul, 1 {1 entityView} diğer {# entityViews}}",
+ "delete-entity-views-text": "Dikkatli olun, onaylandıktan sonra tüm seçilen görünümler kaldırılacak ve ilgili tüm veriler kurtarılamayacaktır.",
+ "unassign-entity-view-title": "Varlık görünümünün atamasını kaldırmak istediğinizden emin misiniz? {{entityViewName}} '? ",
+ "unassign-entity-view-text": "Onaydan sonra varlık görünümü atanmamış olacak ve müşteri tarafından erişilemeyecektir.",
+ "unassign-entity-view": "Varlık görünümünün atamasını kaldır",
+ "unassign-entity-views-title": "Sayım, çoğul, 1 {1 entityView} diğer {# entityViews}} hesabının atamasını kaldırmak istediğinizden emin misiniz?",
+ "unassign-entity-views-text": "Onaylandıktan sonra, seçilen tüm öğe görünümleri atamadan kaldırılacak ve müşteri tarafından erişilemeyecektir.",
+ "entity-view-type": "Varlık Görünümü türü",
+ "entity-view-type-required": "Varlık Görünümü türü gerekli.",
+ "select-entity-view-type": "Varlık görüntüleme türünü seç",
+ "enter-entity-view-type": "Varlık görüntüleme türünü girin",
+ "any-entity-view": "Herhangi bir varlık görünümü",
+ "no-entity-view-types-matching": "{{entitySubtype}} ile eşleşen hiçbir varlık görüntüleme türü bulunamadı. ",
+ "entity-view-type-list-empty": "Hiçbir varlık görünümü türü seçilmemiş.",
+ "entity-view-types": "Varlık Görünümü türleri",
"name": "Ad",
- "name-required": "Ýsim gerekli.",
- "description": "Açýklama",
+ "name-required": "İsim gerekli.",
+ "description": "Açıklama",
"events": "Etkinlikler",
- "details": "Ayrýntýlar",
- "copyId": "Varlýk görüntüleme kimliðini kopyala",
- "assignedToCustomer": "Müþteriye atandý",
- "unable-entity-view-device-alias-title": "Varlýk görünümü takma adý silinemiyor",
- "unable-entity-view-device-alias-text": "Cihaz takma adý {{entityViewAlias}} ', aþaðýdaki widget (lar) tarafýndan kullanýldýðý þekliyle silinemez: <br/> {{widgetsList}} ",
- "select-entity-view": "Varlýk görünümünü seç",
- "make-public": "Varlýðý herkese görünür yap",
+ "details": "Ayrıntılar",
+ "copyId": "Varlık görüntüleme kimliğini kopyala",
+ "assignedToCustomer": "Müşteriye atandı",
+ "unable-entity-view-device-alias-title": "Varlık görünümü takma adı silinemiyor",
+ "unable-entity-view-device-alias-text": "Cihaz takma adı {{entityViewAlias}} ', aşağıdaki widget (lar) tarafından kullanıldığı şekliyle silinemez: <br/> {{widgetsList}} ",
+ "select-entity-view": "Varlık görünümünü seç",
+ "make-public": "Varlığı herkese görünür yap",
"start-ts": "Ts",
"end-ts": "End ts"
},
"event": {
- "event-type": "Etkinlik tipi",
+ "event-type": "Olay türü",
"type-error": "Hata",
- "type-lc-event": "Yaþam döngüsü etkinliði",
- "type-stats": "Ýstatistik",
- "type-debug-rule-node": "Hata ayýklama",
- "type-debug-rule-chain": "Hata ayýklama",
- "no-events-prompt": "Etkinlik bulunamadý",
+ "type-lc-event": "Yaşam döngüsü olayı",
+ "type-stats": "İstatistikler",
+ "type-debug-rule-node": "Hata ayıklama",
+ "type-debug-rule-chain": "Hata ayıklama",
+ "no-events-prompt": "Hiçbir olay bulunamadı",
"error": "Hata",
"alarm": "Alarm",
- "event-time": "Etkinlik zamaný",
+ "event-time": "Olay zamanı",
"server": "Sunucu",
- "body": "Vücut",
+ "body": "İçerik //(Body)",
"method": "Yöntem",
"type": "Tür",
- "entity": "Varlýk",
- "message-id": "Mesaj Kimliði",
+ "entity": "Varlık",
+ "message-id": "Mesaj Kimliği",
"message-type": "Mesaj tipi",
"data-type": "Veri tipi",
- "relation-type": "Ýliþki Türü",
+ "relation-type": "İlişki Türü",
"metadata": "Meta veri",
"data": "Veri",
- "event": "Etkinlik",
+ "event": "Olay",
"status": "Durum",
- "success": "Baþarý",
- "failed": "Baþarýsýz oldu",
- "messages-processed": "Mesajlar iþlendi",
- "errors-occurred": "Hatalar oluþtu"
+ "success": "Başarı",
+ "failed": "Başarısız oldu",
+ "messages-processed": "Mesajlar işlendi",
+ "errors-occurred": "Hatalar oluştu"
},
"extension": {
- "extensions": "Uzantýlar",
- "selected-extensions": "{count, çoðul, 1 {1 uzantý} diðer {# extensions}} seçildi",
+ "extensions": "Uzantılar",
+ "selected-extensions": "{count, çoğul, 1 {1 uzantı} diğer {# extensions}} seçildi",
"type": "Tür",
"key": "Anahtar",
- "value": "Deðer",
- "id": "ÝD",
- "extension-id": "Uzantý kimliði",
+ "value": "Değer",
+ "id": "İD",
+ "extension-id": "Uzantı kimliği",
"extension-type": "Uzatma tipi",
"transformer-json": "JSON *",
- "unique-id-required": "Mevcut uzantý kimliði zaten mevcut.",
- "delete": "Uzantýyý sil",
- "add": "Uzantý eklemek",
- "edit": "Uzantýyý düzenle",
- "delete-extension-title": "{{ExtensionId}} uzantýsýný silmek istediðinizden emin misiniz? ",
- "delete-extension-text": "Dikkatli olun, onaylamadan sonra uzantý ve ilgili tüm veriler kurtarýlamaz.",
- "delete-extensions-title": "{Count, çoðul, 1 {1 uzantý} diðer {# extensions}} silmek istediðinizden emin misiniz?",
- "delete-extensions-text": "Dikkatli olun, onaylandýktan sonra tüm seçilen uzantýlar kaldýrýlacak.",
- "converters": "Dönüþtürücü",
- "converter-id": "Dönüþtürücü kimliði",
- "configuration": "Yapýlandýrma",
- "converter-configurations": "Dönüþtürücü yapýlandýrmalarý",
+ "unique-id-required": "Mevcut uzantı kimliği zaten mevcut.",
+ "delete": "Uzantıyı sil",
+ "add": "Uzantı eklemek",
+ "edit": "Uzantıyı düzenle",
+ "delete-extension-title": "{{ExtensionId}} uzantısını silmek istediğinizden emin misiniz? ",
+ "delete-extension-text": "Dikkatli olun, onaylamadan sonra uzantı ve ilgili tüm veriler kurtarılamaz.",
+ "delete-extensions-title": "{Count, çoğul, 1 {1 uzantı} diğer {# extensions}} silmek istediğinizden emin misiniz?",
+ "delete-extensions-text": "Dikkatli olun, onaylandıktan sonra tüm seçilen uzantılar kaldırılacak.",
+ "converters": "Dönüştürücü",
+ "converter-id": "Dönüştürücü kimliği",
+ "configuration": "Yapılandırma",
+ "converter-configurations": "Dönüştürücü yapılandırmaları",
"token": "Güvenlik belirteci",
- "add-converter": "Dönüþtürücü ekle",
- "add-config": "Dönüþtürücü yapýlandýrmasý ekle",
- "device-name-expression": "Cihaz adý ifadesi",
+ "add-converter": "Dönüştürücü ekle",
+ "add-config": "Dönüştürücü yapılandırması ekle",
+ "device-name-expression": "Cihaz adı ifadesi",
"device-type-expression": "Cihaz tipi ifadesi",
"custom": "Özel",
"to-double": "Çifte",
"transformer": "Transformer",
"json-required": "Trafo jsonu gerekli.",
- "json-parse": "Trafo json ayrýþtýrýlamýyor.",
+ "json-parse": "Trafo json ayrıştırılamıyor.",
"attributes": "Öznitellikler",
"add-attribute": "Özellik ekle",
- "add-map": "Eþleme elemaný ekle",
+ "add-map": "Eşleme elemanı ekle",
"timeseries": "Zaman serisi",
"add-timeseries": "Zaman çizelgeleri ekle",
"field-required": "Alan gereklidir",
@@ -901,26 +901,26 @@
"add-broker": "Broker ekle",
"host": "Host",
"port": "Liman",
- "port-range": "Liman 1'den 65535'e kadar olmalýdýr.",
+ "port-range": "Liman 1'den 65535'e kadar olmalıdır.",
"ssl": "SSL",
"credentials": "Kimlik bilgileri",
- "username": "Kullanýcý adý",
+ "username": "Kullanıcı adı",
"password": "Parola",
- "retry-interval": "Milisaniye cinsinden tekrar deneme aralýðý",
+ "retry-interval": "Milisaniye cinsinden tekrar deneme aralığı",
"anonymous": "Anonim",
"basic": "Temel",
"pem": "PEM",
- "ca-cert": "CA sertifika dosyasý *",
+ "ca-cert": "CA sertifika dosyası *",
"private-key": "Özel anahtar dosya *",
- "cert": "Sertifika dosyasý *",
+ "cert": "Sertifika dosyası *",
"no-file": "Dosya seçilmedi.",
- "drop-file": "Bir dosya býrakýn veya yüklenecek bir dosya seçmek için týklayýn.",
+ "drop-file": "Bir dosya bırakın veya yüklenecek bir dosya seçmek için tıklayın.",
"mapping": "Mapping",
"topic-filter": "Konu filtresi",
- "converter-type": "Dönüþtürücü tipi",
+ "converter-type": "Dönüştürücü tipi",
"converter-json": "Json",
- "json-name-expression": "Cihaz adý json ifadesi",
- "topic-name-expression": "Cihaz adý konu ifadesi",
+ "json-name-expression": "Cihaz adı json ifadesi",
+ "topic-name-expression": "Cihaz adı konu ifadesi",
"json-type-expression": "Cihaz tipi json ifadesi",
"topic-type-expression": "Cihaz tipi konu ifadesi",
"attribute-key-expression": "Öznitelik anahtar ifadesi",
@@ -929,35 +929,35 @@
"request-id-expression": "Kimlik ifadesi iste",
"request-id-json-expression": "Kimlik json ifadesi iste",
"request-id-topic-expression": "Kimlik konu ifadesini isteyin",
- "response-topic-expression": "Yanýt konusu ifadesi",
- "value-expression": "Deðer ifadesi",
+ "response-topic-expression": "Yanıt konusu ifadesi",
+ "value-expression": "Değer ifadesi",
"topic": "Konu",
- "timeout": "Zaman aþýmý milisaniye cinsinden",
- "converter-json-required": "Dönüþtürücü json gerekli.",
- "converter-json-parse": "Dönüþtürücü json ayrýþtýrýlamýyor.",
+ "timeout": "Zaman aşımı milisaniye cinsinden",
+ "converter-json-required": "Dönüştürücü json gerekli.",
+ "converter-json-parse": "Dönüştürücü json ayrıştırılamıyor.",
"filter-expression": "Filtre ifadesi",
- "connect-requests": "Ýstekleri baðla",
- "add-connect-request": "Baðlantý talebi ekle",
- "disconnect-requests": "Ýstekleri kes",
- "add-disconnect-request": "Baðlantýyý kes isteði ekle",
+ "connect-requests": "İstekleri bağla",
+ "add-connect-request": "Bağlantı talebi ekle",
+ "disconnect-requests": "İstekleri kes",
+ "add-disconnect-request": "Bağlantıyı kes isteği ekle",
"attribute-requests": "Özellik istekleri",
- "add-attribute-request": "Özellik isteði ekle",
+ "add-attribute-request": "Özellik isteği ekle",
"attribute-updates": "Öznitelik güncellemeleri",
"add-attribute-update": "Özellik güncellemesi ekle",
- "server-side-rpc": "Sunucu tarafý RPC",
- "add-server-side-rpc-request": "Sunucu tarafý RPC isteði ekle",
- "device-name-filter": "Cihaz adý filtresi",
+ "server-side-rpc": "Sunucu tarafı RPC",
+ "add-server-side-rpc-request": "Sunucu tarafı RPC isteği ekle",
+ "device-name-filter": "Cihaz adı filtresi",
"attribute-filter": "Özellik filtresi",
"method-filter": "Yöntem filtresi",
"request-topic-expression": "Konu ifadesi iste",
- "response-timeout": "Milisaniye cinsinden yanýt zaman aþýmý",
+ "response-timeout": "Milisaniye cinsinden yanıt zaman aşımı",
"topic-expression": "Konu ifadesi",
- "client-scope": "Müþteri kapsamý",
+ "client-scope": "Müşteri kapsamı",
"add-device": "Cihaz ekle",
"opc-server": "Sunucular",
"opc-add-server": "Sunucu ekle",
"opc-add-server-prompt": "Lütfen sunucu ekle",
- "opc-application-name": "Uygulama Adý",
+ "opc-application-name": "Uygulama Adı",
"opc-application-uri": "Uygulama uri",
"opc-scan-period-in-seconds": "Saniyeler içinde tarama süresi",
"opc-security": "Güvenlik",
@@ -968,578 +968,578 @@
"opc-keystore-location": "Yer *",
"opc-keystore-password": "Parola",
"opc-keystore-alias": "Alias",
- "opc-keystore-key-password": "Anahtar þifre",
- "opc-device-node-pattern": "Cihaz düðümü modeli",
- "opc-device-name-pattern": "Cihaz adý deseni",
+ "opc-keystore-key-password": "Anahtar şifre",
+ "opc-device-node-pattern": "Cihaz düğümü modeli",
+ "opc-device-name-pattern": "Cihaz adı deseni",
"modbus-server": "Sunucular / köle",
"modbus-add-server": "Sunucu ekle / köle",
"modbus-add-server-prompt": "Lütfen sunucu / slave ekle",
- "modbus-transport": "Taþýma",
- "modbus-port-name": "Seri port adý",
+ "modbus-transport": "Taşıma",
+ "modbus-port-name": "Seri port adı",
"modbus-encoding": "Kodlama",
"modbus-parity": "Parite",
- "modbus-baudrate": "Baud hýzý",
+ "modbus-baudrate": "Baud hızı",
"modbus-databits": "Veri bitleri",
"modbus-stopbits": "Bitleri durdur",
- "modbus-databits-range": "Veri bitleri 7 ila 8 arasýnda olmalýdýr",
- "modbus-stopbits-range": "Durma bitleri 1'den 2'ye kadar olmalýdýr.",
- "modbus-unit-id": "Birim Kimliði",
- "modbus-unit-id-range": "Birim numarasý 1 ile 247 arasýnda olmalýdýr.",
- "modbus-device-name": "Cihaz adý",
+ "modbus-databits-range": "Veri bitleri 7 ila 8 arasında olmalıdır",
+ "modbus-stopbits-range": "Durma bitleri 1'den 2'ye kadar olmalıdır.",
+ "modbus-unit-id": "Birim Kimliği",
+ "modbus-unit-id-range": "Birim numarası 1 ile 247 arasında olmalıdır.",
+ "modbus-device-name": "Cihaz adı",
"modbus-poll-period": "Anket dönemi (ms)",
"modbus-attributes-poll-period": "Nitelikler yoklama süresi (ms)",
"modbus-timeseries-poll-period": "Timeseries anket süresi (ms)",
- "modbus-poll-period-range": "Anket dönemi pozitif deðer olmalý",
+ "modbus-poll-period-range": "Anket dönemi pozitif değer olmalı",
"modbus-tag": "Etiket",
- "modbus-function": "Ýþlev",
- "modbus-register-address": "Kayýt adresi",
- "modbus-register-address-range": "Kayýt adresi 0 ile 65535 arasýnda olmalýdýr.",
+ "modbus-function": "İşlev",
+ "modbus-register-address": "Kayıt adresi",
+ "modbus-register-address-range": "Kayıt adresi 0 ile 65535 arasında olmalıdır.",
"modbus-register-bit-index": "Bit endeksi",
- "modbus-register-bit-index-range": "Bit endeksi 0 ile 15 arasýnda olmalýdýr",
- "modbus-register-count": "Kayýt sayýsý",
- "modbus-register-count-range": "Kayýt sayýsý pozitif bir deðer olmalýdýr.",
- "modbus-byte-order": "Bayt sýrasý",
+ "modbus-register-bit-index-range": "Bit endeksi 0 ile 15 arasında olmalıdır",
+ "modbus-register-count": "Kayıt sayısı",
+ "modbus-register-count-range": "Kayıt sayısı pozitif bir değer olmalıdır.",
+ "modbus-byte-order": "Bayt sırası",
"sync": {
"status": "Durum",
"sync": "Senkronizasyon",
- "not-sync": "Eþitleme",
- "last-sync-time": "Son senkronizasyon zamaný",
- "not-available": "Müsait deðil"
+ "not-sync": "Eşitleme",
+ "last-sync-time": "Son senkronizasyon zamanı",
+ "not-available": "Müsait değil"
},
- "export-extensions-configuration": "Ýhracat uzantýlarý yapýlandýrmasý",
- "import-extensions-configuration": "Uzantýlarýný içe aktarma yapýlandýrmasý",
- "import-extensions": "Uzantýlarý içe aktar",
- "import-extension": "Uzantý içe aktar",
- "export-extension": "Ýhracat uzantýsý",
- "file": "Uzantýlar dosyasý",
- "invalid-file-error": "Geçersiz uzantý dosyasý"
+ "export-extensions-configuration": "İhracat uzantıları yapılandırması",
+ "import-extensions-configuration": "Uzantılarını içe aktarma yapılandırması",
+ "import-extensions": "Uzantıları içe aktar",
+ "import-extension": "Uzantı içe aktar",
+ "export-extension": "İhracat uzantısı",
+ "file": "Uzantılar dosyası",
+ "invalid-file-error": "Geçersiz uzantı dosyası"
},
"fullscreen": {
- "expand": "Tam ekrana geniþlet",
- "exit": "Tam ekrandan çýk",
- "toggle": "Tam ekran modunu deðiþtir",
+ "expand": "Tam ekran yap",
+ "exit": "Tam ekrandan çık",
+ "toggle": "Tam ekran modu aç/kapat",
"fullscreen": "Tam ekran"
},
"function": {
- "function": "Ýþlev"
+ "function": "Fonksiyon"
},
"grid": {
- "delete-item-title": "Bu maddeyi silmek istediðinden emin misin?",
- "delete-item-text": "Dikkatli olun, onaylandýktan sonra bu öðe ve ilgili tüm veriler kurtarýlamaz.",
- "delete-items-title": "{Count, çoðul, 1 {1 item} diðer {# items}} silmek istediðinizden emin misiniz?",
- "delete-items-action-title": "Sil {count, çoðul, 1 {1 öðe} diðer {# items}}",
- "delete-items-text": "Dikkatli olun, onaylandýktan sonra tüm seçilen öðeler silinecek ve ilgili tüm veriler kurtarýlamayacaktýr.",
- "add-item-text": "Yeni öðe ekle",
- "no-items-text": "Hiç bir öðe bulunamadý",
- "item-details": "Ürün detaylarý",
- "delete-item": "Öðeyi silmek",
- "delete-items": "Ürünleri sil",
- "scroll-to-top": "Baþa kaydýr"
+ "delete-item-title": "Bu öğeyi silmek istediğinizden emin misiniz?",
+ "delete-item-text": "UYARI: Onayladıktan sonra bu öğe ve ilişkili tüm verileri geri yüklenemez şekilde silinecektir.",
+ "delete-items-title": "{ count, select, 1 {1 öğeyi} other {# öğeyi} } silmek istediğinizden emin misiniz?",
+ "delete-items-action-title": "{ count, select, 1 {1 öğeyi} other {# öğeyi} } sil",
+ "delete-items-text": "UYARI: Onayladıktan sonra tüm seçili öğeler ve ilişkili tüm verileri geri yüklenemez şekilde silinecektir.",
+ "add-item-text": "Yeni öğe ekle",
+ "no-items-text": "Hiç bir öğe bulunamadı",
+ "item-details": "Öğe detayları",
+ "delete-item": "Öğeyi sil",
+ "delete-items": "Öğeleri sil",
+ "scroll-to-top": "Üste kaydır"
},
"help": {
- "goto-help-page": "Yardým sayfasýna git"
+ "goto-help-page": "Yardım sayfasına git"
},
"home": {
- "home": "Ev",
+ "home": "Ana sayfa",
"profile": "Profil",
- "logout": "Çýkýþ Yap",
+ "logout": "Çıkış",
"menu": "Menü",
"avatar": "Avatar",
- "open-user-menu": "Kullanýcý menüsünü aç"
+ "open-user-menu": "Kullanıcı menüsünü aç"
},
"import": {
- "no-file": "Dosya seçilmedi",
- "drop-file": "Bir JSON dosyasýný indirin veya yüklemek için bir dosya seçmek için týklayýn."
+ "no-file": "Hiçbir dosya seçilmedi",
+ "drop-file": "Bir JSON dosyası bırakın veya yüklenecek bir dosyayı seçmek için tıklayın."
},
"item": {
- "selected": "Seçilmiþ"
+ "selected": "Seçildi"
},
"js-func": {
- "no-return-error": "Ýþlev deðer döndürmeli!",
- "return-type-mismatch": "Ýþlev '{{type}}' tipinin deðerini döndürmelidir!",
+ "no-return-error": "Fonksiyon bir değer dönmeli!",
+ "return-type-mismatch": "Fonksiyon '{{type}}' türünde bir değer dönmeli!",
"tidy": "Düzenli"
},
"key-val": {
"key": "Anahtar",
- "value": "Deðer",
- "remove-entry": "Giriþi kaldýr",
- "add-entry": "Giriþ ekle",
- "no-data": "Giriþ yok"
+ "value": "Değer",
+ "remove-entry": "Girişi kaldır",
+ "add-entry": "Giriş ekle",
+ "no-data": "Giriş yok"
},
"layout": {
- "layout": "Düzen",
- "manage": "Düzenleri yönet",
- "settings": "Yerleþim ayarlarý",
+ "layout": "Arayüz Düzeni",
+ "manage": "Arayüz düzenini yönet",
+ "settings": "Arayüz düzeni ayarları",
"color": "Renk",
"main": "Ana",
- "right": "Sað",
- "select": "Hedef yerleþimini seç"
+ "right": "Sağ",
+ "select": "Hedef düzen seç"
},
"legend": {
- "position": "Efsane pozisyonu",
- "show-max": "Maksimum deðeri göster",
- "show-min": "Min deðerini göster",
- "show-avg": "Ortalama deðeri göster",
- "show-total": "Toplam deðeri göster",
- "settings": "Açýklama ayarlarý",
+ "position": "Lejant konumu",
+ "show-max": "Maksimum değeri göster",
+ "show-min": "Minimum değeri göster",
+ "show-avg": "Ortalama değeri göster",
+ "show-total": "Toplam değeri göster",
+ "settings": "Lejant ayarları",
"min": "min",
- "max": "max",
- "avg": "avg",
- "total": "Genel Toplam"
+ "max": "maks",
+ "avg": "ort.",
+ "total": "toplam"
},
"login": {
"login": "Oturum aç",
- "request-password-reset": "Þifre sýfýrlama isteði",
- "reset-password": "Þifreyi yenile",
- "create-password": "Þifre oluþtur",
- "passwords-mismatch-error": "Girilen þifreler ayný olmalýdýr!",
- "password-again": "Þifre Tekrar",
- "sign-in": "Lütfen giriþ yapýn",
- "username": "Kullanýcý adý (email)",
- "remember-me": "Beni hatýrla",
- "forgot-password": "Parolanýzý mý unuttunuz?",
- "password-reset": "Parola sýfýrlama",
- "new-password": "Yeni Þifre",
- "new-password-again": "Yeni Þifre Tekrar",
- "password-link-sent-message": "Þifre sýfýrlama baðlantýsý baþarýyla gönderildi!",
+ "request-password-reset": "Parola Sıfırlama İsteği Gönder",
+ "reset-password": "Parola Sıfırla",
+ "create-password": "Parola Oluştur",
+ "passwords-mismatch-error": "Girilen parolalar eşleşmeli!",
+ "password-again": "Parola tekrarı",
+ "sign-in": "Lütfen girişi yapın",
+ "username": "Kullanıcı adı (e-posta)",
+ "remember-me": "Beni hatırla",
+ "forgot-password": "Parolamı unuttum",
+ "password-reset": "Parola sıfırla",
+ "new-password": "Yeni parola",
+ "new-password-again": "Yeni parola tekrarı",
+ "password-link-sent-message": "Parola sıfırlama e-postası başarıyla gönderildi!",
"email": "E-posta"
},
"position": {
"top": "Üst",
"bottom": "Alt",
- "left": "Ayrýldý",
- "right": "Sað"
+ "left": "Sol",
+ "right": "Sağ"
},
"profile": {
"profile": "Profil",
- "change-password": "Þifre deðiþtir",
- "current-password": "Þimdiki Þifre"
+ "change-password": "Şifre değiştir",
+ "current-password": "Şimdiki şifre"
},
"relation": {
- "relations": "Ýliþkiler",
- "direction": "Yön",
+ "relations": "İlişkiler",
+ "direction": "Yönelim",
"search-direction": {
- "FROM": "Kimden",
- "TO": "Alýcý"
+ "FROM": "KAYNAK",
+ "TO": "HEDEF"
},
"direction-type": {
- "FROM": "den",
- "TO": "to"
+ "FROM": "kaynak",
+ "TO": "hedef"
},
- "from-relations": "Giden iliþkiler",
- "to-relations": "Gelen iliþkiler",
- "selected-relations": "{count, çoðul, 1 {1 iliþki} diðer {# relations}} seçildi",
+ "from-relations": "Giden ilişkiler",
+ "to-relations": "Gelen ilişkiler",
+ "selected-relations": "{ count, select, 1 {1 ilişki} other {# ilişki} } seçildi",
"type": "Tür",
- "to-entity-type": "Varlýk türüne",
- "to-entity-name": "Varlýk adýna",
- "from-entity-type": "Varlýk türünden",
- "from-entity-name": "Varlýk adýndan",
- "to-entity": "Varlýk",
- "from-entity": "Varlýktan",
- "delete": "Ýliþkisi sil",
- "relation-type": "Ýliþki türü",
- "relation-type-required": "Ýliþki türü gerekli.",
+ "to-entity-type": "Hedef Öğe Türü",
+ "to-entity-name": "Hedef Öğe Adı",
+ "from-entity-type": "Kaynak Öğe Türü",
+ "from-entity-name": "Kaynak Öğe Adı",
+ "to-entity": "Hedef Öğe",
+ "from-entity": "Kaynak Öğe",
+ "delete": "İlişkiyi sil",
+ "relation-type": "İlişki türü",
+ "relation-type-required": "İlişki türü gerekli.",
"any-relation-type": "Her hangi bir tür",
- "add": "Ýliþki ekle",
- "edit": "Ýliþkisi düzenle",
- "delete-to-relation-title": "{{EntityName}} varlýðýna iliþkin iliþkiyi silmek istediðinizden emin misiniz? ",
- "delete-to-relation-text": "Doðrulamadan sonra, varlýðýn {{entityName}} öðesinin mevcut varlýktan alakasýz olacaðýndan emin olun. ",
- "delete-to-relations-title": "{Count, çoðul, 1 {1 iliþki} diðer {# relations}} silmek istediðinizden emin misiniz?",
- "delete-to-relations-text": "Dikkatli olun, onaylandýktan sonra tüm seçilen iliþkiler kaldýrýlacak ve ilgili varlýklar mevcut varlýk ile ilgisiz olacaktýr.",
- "delete-from-relation-title": "{{EntityName}} varlýðýndan iliþkiyi silmek istediðinizden emin misiniz? ",
- "delete-from-relation-text": "Doðrulama varlýðýnýn, {{entityName}} kuruluþundan alakasýz olacaðýndan emin olun.",
- "delete-from-relations-title": "{Count, çoðul, 1 {1 iliþki} diðer {# relations}} silmek istediðinizden emin misiniz?",
- "delete-from-relations-text": "Dikkatli olun, onaylandýktan sonra tüm seçilen iliþkiler kaldýrýlacak ve mevcut varlýk ilgili varlýklardan ilgisiz olacaktýr.",
- "remove-relation-filter": "Ýliþki filtresini kaldýr",
- "add-relation-filter": "Ýliþki filtresi ekle",
- "any-relation": "Herhangi bir iliþki",
- "relation-filters": "Ýliþki filtreleri",
+ "add": "İlişki ekle",
+ "edit": "İlişki düzenle",
+ "delete-to-relation-title": "'{{entityName}}' öğesine olan ilişkiyi silmek istediğinize emin misiniz?",
+ "delete-to-relation-text": "UYARI: Onaylandıktan sonra '{{entityName}}' öğesinin şimdiki öğeyle olan ilişkisi sona erecektir.",
+ "delete-to-relations-title": "{ count, select, 1 {1 ilişkiyi} other {# ilişkiyi} } silmek istediğinize emin misiniz?",
+ "delete-to-relations-text": "UYARI: Onaylandıktan sonra tüm seçili ilişkiler kaldırılacaktır ve ilgili öğelerin şimdiki öğeyle ilişkisi sona erecektir.",
+ "delete-from-relation-title": "'{{entityName}}' öğesinden ilişkiyi silmek istediğinize emin misiniz?",
+ "delete-from-relation-text": "UYARI: Onaylandıktan sonra şimdiki öğenin '{{entityName}}' öğesiyle ilişkisi sonlandırılacaktır.",
+ "delete-from-relations-title": "{ count, select, 1 {1 ilişkiyi} other {# ilişkiyi} } silmek istediğinize emin misiniz?",
+ "delete-from-relations-text": "UYARI: Onaylandıktan sonra tüm seçili ilişkiler kaldırılacak ve şimdiki öğenin ilgili tüm öğelerle ilişkisi sona erecektir.",
+ "remove-relation-filter": "İlişki filtresini kaldır",
+ "add-relation-filter": "İlişkisi ekle",
+ "any-relation": "Herhangi bir ilişki",
+ "relation-filters": "İlişki filtreleri",
"additional-info": "Ek bilgi (JSON)",
- "invalid-additional-info": "Ek bilgi json ayrýþtýrýlamýyor."
+ "invalid-additional-info": "Ek bilgi JSON'ı parse edilip işlenemedi."
},
"rulechain": {
- "rulechain": "Kural zinciri",
- "rulechains": "Kural zincirleri",
+ "rulechain": "Kural",
+ "rulechains": "Kurallar",
"root": "Kök",
- "delete": "Kural zincirini sil",
- "name": "Ad",
- "name-required": "Ýsim gerekli.",
- "description": "Açýklama",
- "add": "Kural Zinciri Ekleme",
+ "delete": "Kuralı sil",
+ "name": "İsim",
+ "name-required": "İsim gerekli.",
+ "description": "Açıklama",
+ "add": "Kural Ekle",
"set-root": "Kural zincirinin kökü yap",
- "set-root-rulechain-title": "Kural zincirini {{ruleChainName}} root? Yapmak istediðinizden emin misiniz?",
- "set-root-rulechain-text": "Onaydan sonra kural zinciri kökleþecek ve gelen tüm iletilerle ilgilenecek.",
- "delete-rulechain-title": "Kural zincirini {{ruleChainName}} silmek istediðinizden emin misiniz?",
- "delete-rulechain-text": "Dikkatli olun, onaylamadan sonra kural zinciri ve ilgili tüm veriler kurtarýlamaz.",
- "delete-rulechains-title": "{Count, çoðul, 1 {1 kural zinciri} diðer {# kural zincirleri}} silmek istediðinizden emin misiniz?",
- "delete-rulechains-action-title": "Sil {count, çoðul, 1 {1 kural zinciri} diðer {# kural zincirleri}}",
- "delete-rulechains-text": "Dikkatli olun, onaylandýktan sonra seçilen tüm kural zincirleri silinecek ve ilgili tüm veriler kurtarýlamayacaktýr.",
- "add-rulechain-text": "Yeni kural zinciri ekle",
- "no-rulechains-text": "Kural zinciri bulunamadý",
- "rulechain-details": "Kural zinciri detaylarý",
- "details": "Ayrýntýlar",
- "events": "Etkinlikler",
+ "set-root-rulechain-title": "Kural zincirini {{ruleChainName}} root? Yapmak istediğinizden emin misiniz?",
+ "set-root-rulechain-text": "Onaydan sonra kural zinciri kökleşecek ve gelen tüm iletilerle ilgilenecek.",
+ "delete-rulechain-title": "'{{ruleName}}' isimli kuralı silmek istediğinize emin misiniz?",
+ "delete-rulechain-text": "UYARI: Onaylandıktan sonra kural ve ilişkili tüm veriler geri yüklenemez şekilde silinecektir.",
+ "delete-rulechains-title": "{ count, select, 1 {1 kuralı} other {# kuralı} } sikmek istediğinize emin misiniz?",
+ "delete-rulechains-action-title": "{ count, select, 1 {1 kuralı} other {# kuralı} sil}",
+ "delete-rulechains-text": "UYARI: Onaylandıktan sonra seçili tüm kurallar ve ilişkili tüm veriler geri yüklenemez şekilde silinecektir.",
+ "add-rulechain-text": "Yeni kural ekle",
+ "no-rulechains-text":"Hiçbir kural bulunamadı",
+ "rulechain-details": "Kural detayları",
+ "details": "Detaylar",
+ "events": "Olaylar",
"system": "Sistem",
- "import": "Kural zincirini içe aktar",
- "export": "Kural zinciri dýþa aktar",
- "export-failed-error": "Kural zinciri dýþa aktarýlamadý: {{error}}",
- "create-new-rulechain": "Yeni kural zinciri oluþtur",
- "rulechain-file": "Kural zinciri dosyasý",
- "invalid-rulechain-file-error": "Kural zinciri içe aktarýlamýyor: Geçersiz kural zinciri veri yapýsý.",
- "copyId": "Kural zinciri kimliðini kopyala",
- "idCopiedMessage": "Kural zinciri kimliði panoya kopyalandý",
- "select-rulechain": "Kural zincirini seç",
- "no-rulechains-matching": "{{Entity}} ile eþleþen kural zinciri bulunamadý. ",
- "rulechain-required": "Kural zinciri gerekli",
+ "import": "Kuralı içe aktar",
+ "export": "Kuralı dışa aktar",
+ "export-failed-error": "Kural dışa aktarılamadı: {{error}}",
+ "create-new-rule": "Yeni kural oluştur",
+ "rulechain-file": "Kural dosyası",
+ "invalid-rulechain-file-error": "Kural içe aktarılamadı: Geçersiz kural veri yapısı.",
+ "copyId": "Kural kimliğini kopyala",
+ "idCopiedMessage": "Kural kimliği panoya kopyalandı",
+ "select-rulechain": "Kural seç",
+ "no-rulechains-matching": "'{{entity}}' ile eşleşen kural bulunamadı.",
+ "rulechain-required": "Kural gerekli",
"management": "Kural yönetimi",
- "debug-mode": "Hata ayýklama modu"
+ "debug-mode": "Hata ayıklama modu"
},
"rulenode": {
- "details": "Ayrýntýlar",
+ "details": "Ayrıntılar",
"events": "Etkinlikler",
- "search": "Arama düðümleri",
- "open-node-library": "Düðüm kütüphanesini aç",
- "add": "Kural düðümü ekle",
+ "search": "Arama düğümleri",
+ "open-node-library": "Düğüm kütüphanesini aç",
+ "add": "Kural düğümü ekle",
"name": "Ad",
- "name-required": "Ýsim gerekli.",
+ "name-required": "İsim gerekli.",
"type": "Tür",
- "description": "Açýklama",
- "delete": "Kural düðümünü sil",
- "select-all-objects": "Tüm düðümleri ve baðlantýlarý seç",
- "deselect-all-objects": "Tüm düðümlerin ve baðlantýlarýn seçimini kaldýrýn",
- "delete-selected-objects": "Seçilen düðümleri ve baðlantýlarý sil",
+ "description": "Açıklama",
+ "delete": "Kural düğümünü sil",
+ "select-all-objects": "Tüm düğümleri ve bağlantıları seç",
+ "deselect-all-objects": "Tüm düğümlerin ve bağlantıların seçimini kaldırın",
+ "delete-selected-objects": "Seçilen düğümleri ve bağlantıları sil",
"delete-selected": "Silme seçildi",
"select-all": "Hepsini seç",
"copy-selected": "Seçilenleri kopyala",
"deselect-all": "Hiçbirini seçme",
- "rulenode-details": "Kural düðümü ayrýntýlarý",
- "debug-mode": "Hata ayýklama modu",
- "configuration": "Yapýlandýrma",
- "link": "Baðlantý",
- "link-details": "Kural düðüm baðlantý detaylarý",
+ "rulenode-details": "Kural düğümü ayrıntıları",
+ "debug-mode": "Hata ayıklama modu",
+ "configuration": "Yapılandırma",
+ "link": "Bağlantı",
+ "link-details": "Kural düğüm bağlantı detayları",
"add-link": "Link ekle",
- "link-label": "Baðlantý etiketi",
- "link-label-required": "Baðlantý etiketi gerekli.",
- "custom-link-label": "Özel baðlantý etiketi",
- "custom-link-label-required": "Özel baðlantý etiketi gerekli.",
+ "link-label": "Bağlantı etiketi",
+ "link-label-required": "Bağlantı etiketi gerekli.",
+ "custom-link-label": "Özel bağlantı etiketi",
+ "custom-link-label-required": "Özel bağlantı etiketi gerekli.",
"link-labels": "Link etiketleri",
"link-labels-required": "Link etiketleri gerekli.",
- "no-link-labels-found": "Baðlantý etiketi bulunamadý",
- "no-link-label-matching": "{{label}} bulunamadý. ",
- "create-new-link-label": "Yeni bir tane oluþtur!",
+ "no-link-labels-found": "Bağlantı etiketi bulunamadı",
+ "no-link-label-matching": "{{label}} bulunamadı. ",
+ "create-new-link-label": "Yeni bir tane oluştur!",
"type-filter": "Filtre",
- "type-filter-details": "Gelen iletileri yapýlandýrýlmýþ koþullara göre filtrele",
- "type-enrichment": "Zenginleþtirme",
+ "type-filter-details": "Gelen iletileri yapılandırılmış koşullara göre filtrele",
+ "type-enrichment": "Zenginleştirme",
"type-enrichment-details": "Mesaj Meta Verilerine ek bilgi",
- "type-transformation": "Dönüþüm",
- "type-transformation-details": "Mesaj yükünü ve Meta Verileri Deðiþtir",
+ "type-transformation": "Dönüşüm",
+ "type-transformation-details": "Mesaj yükünü ve Meta Verileri Değiştir",
"type-action": "Aksiyon",
- "type-action-details": "Özel eylem gerçekleþtir",
- "type-external": "Dýþ",
- "type-external-details": "Dýþ sistemle etkileþir",
+ "type-action-details": "Özel eylem gerçekleştir",
+ "type-external": "Dış",
+ "type-external-details": "Dış sistemle etkileşir",
"type-rule-chain": "Kural Zinciri",
- "type-rule-chain-details": "Belirtilen Kural Zincirine gelen mesajlarý ilet",
- "type-input": "Giriþ",
- "type-input-details": "Kural Zinciri'nin mantýksal girdisi, bir sonraki ilgili Kural Düðümüne gelen iletileri iletme",
+ "type-rule-chain-details": "Belirtilen Kural Zincirine gelen mesajları ilet",
+ "type-input": "Giriş",
+ "type-input-details": "Kural Zinciri'nin mantıksal girdisi, bir sonraki ilgili Kural Düğümüne gelen iletileri iletme",
"type-unknown": "Bilinmeyen",
- "type-unknown-details": "Çözümlenmemiþ Kural Düðümü",
- "directive-is-not-loaded": "Tanýmlanmýþ yapýlandýrma yönergesi {{directiveName}} 'mevcut deðil. ",
- "ui-resources-load-error": "Yapýlandýrma kullanýcý arayüzü kaynaklarý yüklenemedi.",
+ "type-unknown-details": "Çözümlenmemiş Kural Düğümü",
+ "directive-is-not-loaded": "Tanımlanmış yapılandırma yönergesi {{directiveName}} 'mevcut değil. ",
+ "ui-resources-load-error": "Yapılandırma kullanıcı arayüzü kaynakları yüklenemedi.",
"invalid-target-rulechain": "Hedef kural zinciri çözülemiyor!",
- "test-script-function": "Test komut dosyasý iþlevi",
+ "test-script-function": "Test komut dosyası işlevi",
"message": "Mesaj",
"message-type": "Mesaj tipi",
"select-message-type": "Mesaj tipini seç",
"message-type-required": "Mesaj türü gerekli",
"metadata": "Meta veri",
- "metadata-required": "Meta veri giriþleri boþ býrakýlamaz.",
- "output": "Çýktý",
+ "metadata-required": "Meta veri girişleri boş bırakılamaz.",
+ "output": "Çıktı",
"test": "Ölçek",
- "help": "Yardým et"
+ "help": "Yardım et"
},
"tenant": {
- "tenant": "Kiracý",
- "tenants": "Kiracýlar",
- "management": "Kiracý yönetimi",
- "add": "Kiracý ekle",
- "admins": "Yöneticiler",
- "manage-tenant-admins": "Kiracý yöneticileri yönet",
- "delete": "Kiracýyý sil",
- "add-tenant-text": "Yeni kiracý ekle",
- "no-tenants-text": "Kiracý bulunamadý",
- "tenant-details": "Kiracý detaylarý",
- "delete-tenant-title": "Kiracýyý silmek istediðinizden emin misiniz? {{TenantTitle}}? ",
- "delete-tenant-text": "Dikkatli olun, onayýndan sonra kiracý ve ilgili tüm veriler kurtarýlamaz.",
- "delete-tenants-title": "{Count, çoðul, 1 {1 kiracý} diðer {# kiracý}} silmek istediðinizden emin misiniz?",
- "delete-tenants-action-title": "Sil {count, çoðul, 1 {1 kiracý} diðer {# kiracý}}",
- "delete-tenants-text": "Dikkatli olun, onaylandýktan sonra tüm kiracýlar silinecek ve ilgili tüm veriler kurtarýlamayacaktýr.",
- "title": "Baþlýk",
- "title-required": "Baþlýk gerekli.",
- "description": "Açýklama",
- "details": "Ayrýntýlar",
- "events": "Etkinlikler",
- "copyId": "Kiracý Kimliði Kimliði",
- "idCopiedMessage": "Kiracý Kimliði panoya kopyalandý",
- "select-tenant": "Kiracý seç",
- "no-tenants-matching": "{{Entity}} ile eþleþen kiracý bulunamadý. ",
- "tenant-required": "Kiracý gerekli"
+ "tenant": "Tenant",
+ "tenants": "Tenantlar",
+ "management": "Tenant yönetimi",
+ "add": "Tenant Ekle",
+ "admins": "Adminler",
+ "manage-tenant-admins": "Tenant Adminlerini Yönet",
+ "delete": "Tenant sil",
+ "add-tenant-text": "Yeni tenant ekle",
+ "no-tenants-text": "Hiçbir tenant bulunamadı",
+ "tenant-details": "Tenant detayları",
+ "delete-tenant-title": "'{{tenantTitle}}' isimli tenantı silmek istediğinize emin misiniz?",
+ "delete-tenant-text": "UYARI: Onaylandıktan sonra tenant ve ilişkili tüm veriler geri yüklenemez şekilde silinecektir.",
+ "delete-tenants-title": "{ count, select, 1 {1 tenantı} other {# tenantı} } silmek istediğinize emin misiniz?",
+ "delete-tenants-action-title": "{ count, select, 1 {1 tenantı} other {# tenantı} } sil",
+ "delete-tenants-text": "UYARI: Onaylandıktan sonra seçili tüm tenantlar ve ilişkili tüm veriler geri yüklenemez şekilde silinecektir",
+ "title": "Başlık",
+ "title-required": "Başlık gerekli.",
+ "description": "Açıklama",
+ "details": "Detaylar",
+ "events": "Olaylar",
+ "copyId": "Tenant kimliğini kopyala",
+ "idCopiedMessage": "Tenant kimliği panoya kopyalandı",
+ "select-tenant": "Tenant seç",
+ "no-tenants-matching": "'{{entity}}' ile eşleşen tenant bulunamadı.",
+ "tenant-required": "Tenant gerekli"
},
"timeinterval": {
- "seconds-interval": "{saniye, çoðul, 1 {1 saniye} diðer {# seconds}}",
- "minutes-interval": "{dakika, çoðul, 1 {1 dakika} diðer {# dakika}}",
- "hours-interval": "{saat, çoðul, 1 {1 saat} diðer {# hours}}",
- "days-interval": "{günler, çoðul, 1 {1 gün} diðer {# gün}}",
+ "seconds-interval": "{ seconds, select, 1 {1 saniye} other {# saniye} }",
+ "minutes-interval": "{ minutes, select, 1 {1 dakika} other {# dakika} }",
+ "hours-interval": "{ hours, select, 1 {1 saat} other {# saat} }",
+ "days-interval": "{ days, select, 1 {1 gün} other {# gün} }",
"days": "Gün",
- "hours": "Saatler",
+ "hours": "Saat",
"minutes": "Dakika",
"seconds": "Saniye",
- "advanced": "Ýleri"
+ "advanced": "İleri düzey"
},
"timewindow": {
- "days": "{günler, çoðul, 1 {gün} diðer {# gün}}",
- "hours": "{saat, çoðul, 0 {saat} 1 {1 saat} diðer {# hours}}",
- "minutes": "{dakika, çoðul, 0 {dakika} 1 {1 dakika} diðer {# dakika}}",
- "seconds": "{saniye, çoðul, 0 {saniye} 1 {1 saniye} diðer {# seconds}}",
+ "days": "{ days, select, 1 { gün } other {# gün } }",
+ "hours": "{ hours, select, 0 { saat } 1 {1 saat } other {# saat } }",
+ "minutes": "{ minutes, select, 0 { dakika } 1 {1 dakika } other {# dakika } }",
+ "seconds": "{ seconds, select, 0 { saniye } 1 {1 saniye } other {# saniye } }",
"realtime": "Gerçek zaman",
- "history": "Tarihçe",
+ "history": "Tarih",
"last-prefix": "son",
- "period": "{{startTime}} - {{endTime}} arasýnda ",
- "edit": "Zaman penceresini düzenle",
- "date-range": "Tarih aralýðý",
+ "period": "{{ startTime }}'dan {{ endTime }}'a kadar",
+ "edit": "Zaman aralığını düzenle",
+ "date-range": "Tarih aralığı",
"last": "Son",
- "time-period": "Zaman dilimi"
+ "time-period": "Zaman periyodu"
},
"user": {
- "user": "Kullanýcý",
- "users": "Kullanýcýlar",
- "customer-users": "Müþteri Kullanýcýlarý",
- "tenant-admins": "Kiracý Admins",
+ "user": "Kullanıcı",
+ "users": "Kullanıcılar",
+ "customer-users": "Kullanıcılar",
+ "tenant-admins": "Tenant Adminleri",
"sys-admin": "Sistem yöneticisi",
- "tenant-admin": "Kiracý yöneticisi",
- "customer": "Müþteri",
+ "tenant-admin": "Tenant yöneticisi",
+ "customer": "Kullanıcı Grubu",
"anonymous": "Anonim",
- "add": "Kullanýcý Ekle",
- "delete": "Kullanýcýyý sil",
- "add-user-text": "Yeni kullanýcý Ekle",
- "no-users-text": "Kullanýcý bulunamadý",
- "user-details": "Kullanýcý detaylarý",
- "delete-user-title": "Kullanýcýyý silmek istediðinizden emin misiniz? {{UserEmail}} '? ",
- "delete-user-text": "Dikkatli olun, onaylandýktan sonra kullanýcý ve ilgili tüm veriler kurtarýlamayacaktýr.",
- "delete-users-title": "{Count, çoðul, 1 {1 kullanýcý} diðer {# users}} silmek istediðinizden emin misiniz?",
- "delete-users-action-title": "Sil {count, çoðul, 1 {1 kullanýcý} diðer {# users}}",
- "delete-users-text": "Dikkatli olun, onaylandýktan sonra tüm seçilen kullanýcýlar silinecek ve ilgili tüm veriler kurtarýlamayacaktýr.",
- "activation-email-sent-message": "Etkinleþtirme e-postasý baþarýyla gönderildi!",
- "resend-activation": "Etkinleþtirmeyi tekrar gönder",
+ "add": "Kullanıcı ekle",
+ "delete": "Kullanıcı sil",
+ "add-user-text": "Yeni kullanıcı ekle",
+ "no-users-text": "Hiçbir kullanıcı bulunamadı",
+ "user-details": "Kullanıcı detayları",
+ "delete-user-title": "'{{userEmail}}' kullanıcısını silmek istediğinize emin misiniz?",
+ "delete-user-text": "UYARI: Onaylandıktan sonra kullanıcı ve ilişkili tüm verileri geri yüklenemez şekilde silinecektir.",
+ "delete-users-title": "{ count, select, 1 {1 kullanıcıyı} other {# kullanıcıyı} } sikmek istediğinize emin misiniz?",
+ "delete-users-action-title": "{ count, select, 1 {1 kullancıyı} other {# kullanıcıyı} } sil",
+ "delete-users-text": "UYARI: Onaylandıktan sonra kullanıcı ve ilişkili tüm verileri geri yüklenemez şekilde silinecektir.",
+ "activation-email-sent-message": "Etkinleştirme e-postası başarılı bir şekilde gönderildi!",
+ "resend-activation": "Etkinleştirme e-postasını yeniden gönder",
"email": "E-posta",
- "email-required": "Email gereklidir.",
- "invalid-email-format": "Geçersiz e-posta formatý.",
- "first-name": "Ýsim",
- "last-name": "Soyadý",
- "description": "Açýklama",
- "default-dashboard": "Varsayýlan gösterge paneli",
+ "email-required": "E-posta gerekli.",
+ "invalid-email-format": "Geçersiz e-posta formatı.",
+ "first-name": "Ad",
+ "last-name": "Soyad",
+ "description": "Açıklama",
+ "default-dashboard": "Varsayılan kontrol paneli",
"always-fullscreen": "Her zaman tam ekran",
- "select-user": "Kullanýcý seç",
- "no-users-matching": "{{Entity}} ile eþleþen kullanýcý bulunamadý. ",
- "user-required": "Kullanýcý gerekli",
- "activation-method": "Aktivasyon yöntemi",
- "display-activation-link": "Etkinleþtirme baðlantýsý göster",
- "send-activation-mail": "Etkinleþtirme postasý gönder",
- "activation-link": "Kullanýcý aktivasyon linki",
- "activation-link-text": "Kullanýcýyý aktif hale getirmek için aþaðýdaki <a href='{{activationLink}} target='_blank'> aktivasyon linki </a> kullanýn.",
- "copy-activation-link": "Etkinleþtirme baðlantýsýný kopyala",
- "activation-link-copied-message": "Kullanýcý aktivasyon linki panoya kopyalandý",
- "details": "Ayrýntýlar",
- "login-as-tenant-admin": "Kiracý Yönetici Giriþi",
- "login-as-customer-user": "Müþteri olarak giriþ yap"
+ "select-user": "Kullanıcı se.",
+ "no-users-matching": "'{{entity}}' ile eşleşen kullanıcı bulunamadı.",
+ "user-required": "Kullanıcı gerekli",
+ "activation-method": "Etkinleştirme yöntemi",
+ "display-activation-link": "Etkinleştirme bağlantısını görüntüle",
+ "send-activation-mail": "Etkinleştirme e-postası gönder",
+ "activation-link": "Kullanıcı hesabını etkinleştirme bağlantısı",
+ "activation-link-text": "Kullanıcı hesabını etkinleştirmek için <a href='{{activationLink}}' target='_blank'>bağlantıyı</a> kullanın:",
+ "copy-activation-link": "Etkinleştirme bağlantısını kopyala",
+ "activation-link-copied-message": "Kullanıcı hesabı etkinleştirme bağlantısı panoya kopyalandı",
+ "details": "Ayrıntılar",
+ "login-as-tenant-admin": "Tenant Yönetici Girişi",
+ "login-as-customer-user": "Kullanıcı olarak giriş yap"
},
"value": {
- "type": "Deðer türü",
- "string": "Dize",
- "string-value": "Dize deðeri",
+ "type": "Değer tğrğ",
+ "string": "String",
+ "string-value": "String değeri",
"integer": "Integer",
- "integer-value": "Tamsayý deðeri",
- "invalid-integer-value": "Geçersiz tam sayý",
- "double": "Çift",
- "double-value": "Çift deðer",
- "boolean": "Boole",
- "boolean-value": "Boole deðeri",
- "false": "Yanlýþ",
- "true": "Doðru",
+ "integer-value": "Integer değeri",
+ "invalid-integer-value": "Geçersiz integer değeri",
+ "double": "Double",
+ "double-value": "Double değeri",
+ "boolean": "Boolean",
+ "boolean-value": "Boolean değeri",
+ "false": "Yanlış",
+ "true": "Doğru",
"long": "Uzun"
},
"widget": {
- "widget-library": "Widgets Kitaplýðý",
- "widget-bundle": "Widget Paketi",
- "select-widgets-bundle": "Widget paketini seç",
- "management": "Widget yönetimi",
- "editor": "Widget Düzenleyici",
- "widget-type-not-found": "Sorun yükleme pencere öðesi yapýlandýrmasý. <br> Muhtemelen iliþkili /n pencere öðesi türü kaldýrýldý.",
- "widget-type-load-error": "Widget, aþaðýdaki hatalardan dolayý yüklenmedi:",
- "remove": "Widget'ý kaldýr",
- "edit": "Widget düzenle",
- "remove-widget-title": "Widget'ý kaldýrmak istediðinizden emin misiniz? {{WidgetTitle}}? ",
- "remove-widget-text": "Onaydan sonra widget ve ilgili tüm veriler kurtarýlamaz.",
+ "widget-library": "Gösterge Kütüphanesi",
+ "widget-bundle": "Gösterge Demeti",
+ "select-widgets-bundle": "Gösterge demeti seç",
+ "management": "Gösterge yönetimi",
+ "editor": "Gösterge düzenleyici",
+ "widget-type-not-found": "Gösterge yapılandırması yüklenemedi.<br>Muhtemelen ilgili\n gösterge türü kaldırılmış.",
+ "widget-type-load-error": "Gösterge şu sebeplerden dolayı yüklenemedi:",
+ "remove": "Göstergeyi kaldır",
+ "edit": "Göstergeyi düzenle",
+ "remove-widget-title": "'{{widgetTitle}}' isimli göstermeyi kaldırmak istediğinizden emin misiniz?",
+ "remove-widget-text": "UYARI: Onaylandıktan sonra gösterge ve tüm ilişkili verileri geri yüklenemez şekilde silinecek.",
"timeseries": "Zaman serisi",
"search-data": "Arama verileri",
- "no-data-found": "Veri bulunamadý",
- "latest-values": "Son deðerler",
- "rpc": "Kontrol aracý",
- "alarm": "Alarm gereci",
- "static": "Statik pencere öðesi",
- "select-widget-type": "Widget tipi seç",
- "missing-widget-title-error": "Widget baþlýðý belirtilmelidir!",
- "widget-saved": "Widget kaydedildi",
- "unable-to-save-widget-error": "Widget kaydedilemiyor! Widget'ýn hatalarý var!",
- "save": "Widget kaydet",
- "saveAs": "Widget olarak kaydet",
- "save-widget-type-as": "Widget türünü kaydet",
- "save-widget-type-as-text": "Lütfen yeni pencere öðesi baþlýðýný girin ve / veya hedef widget'larý seçin",
- "toggle-fullscreen": "Tam ekrana geç",
- "run": "Widget'ý çalýþtýr",
- "title": "Widget Baþlýðý",
- "title-required": "Widget baþlýðý gerekiyor.",
- "type": "Widget türü",
+ "no-data-found": "Veri bulunamadı",
+ "latest-values": "Son değerler",
+ "rpc": "Kontrol göstergesi",
+ "alarm": "Alarm göstergesi",
+ "static": "Statik gösterge",
+ "select-widget-type": "Gösterge türü seç",
+ "missing-widget-title-error": "Gösterge başlığı belirtilmelidir!",
+ "widget-saved": "Gösterge kaydedildi",
+ "unable-to-save-widget-error": "Gösterge kaydedilemedi! Göstergede hatalar mevcut!",
+ "save": "Göstergeyi kaydet",
+ "saveAs": "Göstergeyi farklı kaydet",
+ "save-widget-type-as": "Gösterge türünü farklı kaydet",
+ "save-widget-type-as-text": "Lütfen gösterge başlığı girin veya hedef gösterge demeti seçin",
+ "toggle-fullscreen": "Tam ekran aç/kapat",
+ "run": "Göstergeyi çalıştır",
+ "title": "Gösterge başlığı",
+ "title-required": "Gösterge başlığı gerekli.",
+ "type": "Gösterge türü",
"resources": "Kaynaklar",
"resource-url": "JavaScript / CSS URL",
- "remove-resource": "Kaynaðý kaldýr",
+ "remove-resource": "Kaynağı kaldır",
"add-resource": "Kaynak ekle",
"html": "HTML",
- "tidy": "Düzenli",
+ "tidy": "Tertiple",
"css": "CSS",
- "settings-schema": "Ayarlar þemasý",
- "datakey-settings-schema": "Veri anahtarý ayarlarý þemasý",
- "javascript": "JavaScript",
- "remove-widget-type-title": "'{{WidgetName}}' widget türünü kaldýrmak istediðinizden emin misiniz?",
- "remove-widget-type-text": "Onaydan sonra widget tipi ve ilgili tüm veriler kurtarýlamayacak.",
- "remove-widget-type": "Widget türünü kaldýr",
- "add-widget-type": "Yeni widget türü ekle",
- "widget-type-load-failed-error": "Widget türü yüklenemedi!",
- "widget-template-load-failed-error": "Widget þablonu yüklenemedi!",
- "add": "Widget Ekle",
- "undo": "Widget deðiþikliklerini geri al",
- "export": "Widget'ý dýþa aktar"
+ "settings-schema": "Ayarlar şeması",
+ "datakey-settings-schema": "Veri anahtarı ayarları şeması",
+ "javascript": "Javascript",
+ "remove-widget-type-title": "'{{widgetName}}' isimli gösterge türünü kaldırmak istediğinizden emin misiniz?",
+ "remove-widget-type-text": "UYARI: Onaylandıktan sonra, gösterge türü ve ilgili tüm veriler geri yüklenemez şekilde silinecektir.",
+ "remove-widget-type": "Gösterge türünü kaldır",
+ "add-widget-type": "Yeni gösterge türü ekle",
+ "widget-type-load-failed-error": "Gösterge türü yüklenemedi!",
+ "widget-template-load-failed-error": "Gösterge şablonu yüklenemedi!",
+ "add": "Gösterge ekle",
+ "undo": "Gösterge değişikliklerini geri al",
+ "export": "Göstergeyi dışa aktar"
},
"widget-action": {
- "header-button": "Widget baþlýk düðmesi",
- "open-dashboard-state": "Yeni gösterge panosuna git",
- "update-dashboard-state": "Mevcut kontrol paneli durumunu güncelle",
- "open-dashboard": "Diðer kontrol paneline git",
+ "header-button": "Gösterge başlık butonu",
+ "open-dashboard-state": "Yeni kontrol paneli durumunua git",
+ "update-dashboard-state": "Kontrol paneli durumunu güncelle",
+ "open-dashboard": "Diğer kontrol paneline git",
"custom": "Özel eylem",
- "target-dashboard-state": "Hedef gösterge panosu durumu",
- "target-dashboard-state-required": "Hedef gösterge tablosu gerekli",
- "set-entity-from-widget": "Öðeyi pencere öðesinden ayarla",
- "target-dashboard": "Hedef gösterge panosu",
- "open-right-layout": "Saðdaki gösterge tablosu düzeni (mobil görünüm)"
+ "target-dashboard-state": "Hedef kontrol paneli durumu",
+ "target-dashboard-state-required": "Hedef kontrol paneli durumu gerekli",
+ "set-entity-from-widget": "Göstergeden öğe belirle",
+ "target-dashboard": "Hedef kontrol paneli",
+ "open-right-layout": "Sağdaki kontrol paneli arayüz düzenini aç(mobil görünüm)"
},
"widgets-bundle": {
- "current": "Mevcut paket",
- "widgets-bundles": "Widget Paketleri",
- "add": "Widget Paketi Ekle",
- "delete": "Widget paketini sil",
- "title": "Baþlýk",
- "title-required": "Baþlýk gerekli.",
- "add-widgets-bundle-text": "Yeni widget'lar paketi ekle",
- "no-widgets-bundles-text": "Widget paketi bulunamadý",
- "empty": "Widget'ler paketi boþ",
- "details": "Ayrýntýlar",
- "widgets-bundle-details": "Widget'lar paket ayrýntýlarýný",
- "delete-widgets-bundle-title": "Widget paketini {{widgetsBundleTitle}} silmek istediðinizden emin misiniz?",
- "delete-widgets-bundle-text": "Dikkatli olun, onaylandýktan sonra widget'lar paketi ve tüm ilgili veriler kurtarýlamayacak.",
- "delete-widgets-bundles-title": "{Count, çoðul, 1 {1 widgets bundle} diðer {# widgets bundles}} silmek istediðinizden emin misiniz?",
- "delete-widgets-bundles-action-title": "Sil {count, çoðul, 1 {1 widgets bundle} diðer {# widgets bundles}}",
- "delete-widgets-bundles-text": "Dikkatli olun, onaylandýktan sonra tüm seçilen widget'lar paketler kaldýrýlacak ve ilgili tüm veriler kurtarýlamayacaktýr.",
- "no-widgets-bundles-matching": "{{WidgetsBundle}} ile eþleþen hiçbir widget grubu bulunamadý. ",
- "widgets-bundle-required": "Widget paketi gerekli.",
+ "current": "Şimdiki demet",
+ "widgets-bundles": "Gösterge Demetleri",
+ "add": "Gösterge Demeti Ekle",
+ "delete": "Gösterge demeti sil",
+ "title": "Başlık",
+ "title-required": "Başlık gerekli.",
+ "add-widgets-bundle-text": "Yeni gösterge demeti ekle",
+ "no-widgets-bundles-text": "Hiçbir gösterge demeti bulunamadı",
+ "empty": "Gösterge demeti boş",
+ "details": "Detaylar",
+ "widgets-bundle-details": "Gösterge demeti detayları",
+ "delete-widgets-bundle-title": "'{{widgetsBundleTitle}}' isimli gösterge demetini silmek istediğinize emin misiniz?",
+ "delete-widgets-bundle-text": "UYARI: Onaylandıktan sonra gösterge demeti ve ilişkili tüm veriler geri yüklenemez şekilde silinecektir.",
+ "delete-widgets-bundles-title": "{ count, select, 1 {1 gösterge demetini} other {# gösterge demetini} } silmek istediğinize emin misiniz?",
+ "delete-widgets-bundles-action-title": "{ count, select, 1 {1 gösterge demetini} other {# gösterge demetini} } sil",
+ "delete-widgets-bundles-text": "UYARI: Onaylandıktan sonra seçili tüm gösterge demetleri ve ilişkili tüm veriler geri yüklenemez şekilde silinecektir.",
+ "no-widgets-bundles-matching": "'{{widgetsBundle}}' ile eşleşen gösterge demeti bulunamadı.",
+ "widgets-bundle-required": "Gösterge demeti gerekli.",
"system": "Sistem",
- "import": "Widget paketlerini içe aktar",
- "export": "Widget paketini dýþa aktar",
- "export-failed-error": "Widget grubu dýþa aktarýlamadý: {{error}}",
- "create-new-widgets-bundle": "Yeni widget'lar paketi oluþtur",
- "widgets-bundle-file": "Widgets paket dosyasý",
- "invalid-widgets-bundle-file-error": "Widget grubu içe aktarýlamýyor: Geçersiz widget'lar veri yapýsýný paketliyor."
+ "import": "Gösterge demetini içe aktar",
+ "export": "Gösterge demetini dışa aktar",
+ "export-failed-error": "Gösterge demetini dışa aktaramadı: {{error}}",
+ "create-new-widgets-bundle": "Yeni gösterge demeti oluştur",
+ "widgets-bundle-file": "Gösterge demeti dosyası",
+ "invalid-widgets-bundle-file-error": "Gösterge demeti içe aktarılamadı: Geçersiz gösterge demeti veri yapısı."
},
"widget-config": {
"data": "Veri",
"settings": "Ayarlar",
- "advanced": "Ýleri",
- "title": "Baþlýk",
- "general-settings": "Genel Ayarlar",
- "display-title": "Baþlýk",
- "drop-shadow": "Düþen gölge",
- "enable-fullscreen": "Tam ekraný etkinleþtir",
+ "advanced": "İleri düzey",
+ "title": "Başlık",
+ "general-settings": "Genel ayarlar",
+ "display-title": "Başlığı göster",
+ "drop-shadow": "Gölge",
+ "enable-fullscreen": "Tam ekranı etkinleştir",
"background-color": "Arka plan rengi",
- "text-color": "Metin rengi",
- "padding": "Dolgu malzemesi",
- "margin": "Kenar",
- "widget-style": "Widget stili",
- "title-style": "Baþlýk stili",
- "mobile-mode-settings": "Mobil mod ayarlarý",
- "order": "Sipariþ",
+ "text-color": "Yazı rengi",
+ "padding": "İç aralık (Padding)",
+ "margin": "Dış aralık (Margin)",
+ "widget-style": "Gösterge stili",
+ "title-style": "Başlık stili",
+ "mobile-mode-settings": "Mobil mod ayarları",
+ "order": "Sıra",
"height": "Yükseklik",
- "units": "Deðerin yanýnda gösterilecek özel sembol",
- "decimals": "Kayan noktadan sonraki basamak sayýsý",
- "timewindow": "Timewindow",
- "use-dashboard-timewindow": "Gösterge panosu zaman tüneli",
- "display-legend": "Gösterge efsanesi",
- "datasources": "Veri kaynaklarý",
- "maximum-datasources": "Maksimum {sayým, çoðul, 1 {1 veri kaynaðý izinli.} Diðer {# veri kaynaklarýna izin verilir}}",
+ "units": "Değerin yanında göstermek için özel simge",
+ "decimals": "Noktadan sonraki basamak sayısı",
+ "timewindow": "Zaman aralığı",
+ "use-dashboard-timewindow": "Kontrol paneli zaman aralığı kullan",
+ "display-legend": "Lejant göster",
+ "datasources": "Veri kaynakları",
+ "maximum-datasources": "En fazla { count, select, 1 {1 veri kaynağı kullanılabilir.} other {# veri kaynağı kullanılabilir} }",
"datasource-type": "Tür",
"datasource-parameters": "Parametreler",
- "remove-datasource": "Veri kaynaðýný kaldýr",
- "add-datasource": "Veri kaynaðý ekle",
- "target-device": "Hedef cihaz",
- "alarm-source": "Alarm kaynaðý",
- "actions": "Ýþlemler",
- "action": "Aksiyon",
+ "remove-datasource": "Veri kaynağını kaldır",
+ "add-datasource": "Veri kaynağı ekle",
+ "target-device": "Hedef aygıt",
+ "alarm-source": "Alarm kaynağı",
+ "actions": "Eylemler",
+ "action": "Eylem",
"add-action": "Eylem ekle",
- "search-actions": "Arama iþlemleri",
- "action-source": "Eylem kaynaðý",
- "action-source-required": "Eylem kaynaðý gerekli.",
- "action-name": "Ad",
- "action-name-required": "Eylem adý gerekli.",
- "action-name-not-unique": "Ayný ada sahip baþka bir eylem zaten var. <br/> Eylem adý, ayný eylem kaynaðý içinde benzersiz olmalýdýr.",
- "action-icon": "Simge",
+ "search-actions": "Eylem ara",
+ "action-source": "Eylem kaynağı",
+ "action-source-required": "Eylem kaynağı gerekli.",
+ "action-name": "İsim",
+ "action-name-required": "Eylem ismi gerekli.",
+ "action-name-not-unique": "Aynı ada sahip başka bir işlem zaten var.<br/>Eylem adı, aynı eylem kaynağı içinde emsalsiz olmalıdır.",
+ "action-icon": "İkon",
"action-type": "Tür",
- "action-type-required": "Eylem türü gerekli",
+ "action-type-required": "Eylem türü gerekli.",
"edit-action": "Eylemi düzenle",
"delete-action": "Eylemi sil",
- "delete-action-title": "Widget eylemini sil",
- "delete-action-text": "Widget eylemini {{actionName}} adýyla silmek istediðinizden emin misiniz?"
+ "delete-action-title": "Gösterge eylemini sil",
+ "delete-action-text": "'{{actionName}}' isimli gösterge eylemini silmek istediğinizden emin misiniz?"
},
"widget-type": {
- "import": "Widget türü içe aktar",
- "export": "Widget türünü dýþa aktar",
- "export-failed-error": "Widget türü verilemiyor: {{error}}",
- "create-new-widget-type": "Yeni pencere öðesi türü oluþtur",
- "widget-type-file": "Widget tipi dosya",
- "invalid-widget-type-file-error": "Widget türü içe aktarýlamýyor: Geçersiz pencere öðesi türü yapýsý."
+ "import": "Gösterge türünü içer aktar",
+ "export": "Gösterge türünü dışa aktar",
+ "export-failed-error": "Gösterge türü dışa aktarılamadı: {{error}}",
+ "create-new-widget-type": "Yeni gösterge türü oluştur",
+ "widget-type-file": "Gösterge türü dosyası",
+ "invalid-widget-type-file-error": "Gösterge türü içe aktarılamadı: Geçersiz gösterge türü veri yapısı."
},
"icon": {
- "icon": "Simge",
- "select-icon": "Simge seç",
- "material-icons": "Malzeme simgeleri",
- "show-all": "Tüm simgeleri göster"
+ "icon": "İkon",
+ "select-icon": "İkon seç",
+ "material-icons": "Material konları",
+ "show-all": "Tüm ikonları göster"
},
"custom": {
"widget-action": {
- "action-cell-button": "Eylem hücresi düðmesi",
- "row-click": "Satýr týklamasý",
- "marker-click": "Ýþaretçi týklamasýnda ",
- "tooltip-tag-action": "Araç ipucu etiketi iþlemi"
+ "action-cell-button": "Eylem hücre butonu",
+ "row-click": "Satır tıklama eylemi",
+ "marker-click": "İşaretçi tıklama eylemi",
+ "tooltip-tag-action": "İpucu etiket eylemi"
}
},
"language": {
"language": "Dil",
"locales": {
- "fr_FR": "Fransýzca",
+ "fr_FR": "Fransızca",
"zh_CN": "Çince",
- "en_US": "Ýngilizce",
- "it_IT": "Ýtalyan",
+ "en_US": "İngilizce",
+ "it_IT": "İtalyan",
"ko_KR": "Koreli",
"ru_RU": "Rusça",
- "es_ES": "Ýspanyol",
+ "es_ES": "İspanyol",
"ja_JA": "Japonca",
- "TR": "Türk"
+ "TR": "Türkçe"
}
}
-}
+}
\ No newline at end of file