From 263f207dc91bc50171878bc0c442adfe008823c7 Mon Sep 17 00:00:00 2001 From: jlestel Date: Mon, 20 May 2024 13:11:13 +0200 Subject: [PATCH] Dynamic endpoints and token to use official Tesla API (self-hosted or from third party provider) (#3866) * feat: endpoints by env * fix: typo * fix: useless env * fix: format * fix: distinct auth domain and url * format * fix: force issuer url if needed * feat: new streaming based on vin * fix refresh * revert * up * feat: no need for access token / refresh token if the TOKEN env var is present * feat: update login if token env var exists * feat: add ENV var to allow insecure wss * fix: remove TESLA_CN * fix(naming): TESLA_API_URL to TESLA_API_DOMAIN * feat: add an env var to allo invalid certs on WSS * doc: add API domains env vars description * fix: typo * feat: add env var to change log level * fix: APP_LOG_LEVEL * feat: add TOKEN documention and wording * fix: refacto insecure param * feat: naming and doc * fix: missing env var usage --------- Co-authored-by: Julien --- lib/tesla_api/auth.ex | 23 +++- lib/tesla_api/auth/refresh.ex | 11 +- lib/tesla_api/stream.ex | 13 +- lib/tesla_api/vehicle.ex | 23 ++-- lib/teslamate/http.ex | 2 +- lib/teslamate/vehicles/vehicle.ex | 9 +- lib/teslamate_web/live/signin_live/index.ex | 4 +- .../live/signin_live/index.html.heex | 112 +++++++++++------- priv/gettext/da/LC_MESSAGES/default.po | 23 ++-- priv/gettext/de/LC_MESSAGES/default.po | 23 ++-- priv/gettext/default.pot | 23 ++-- priv/gettext/en/LC_MESSAGES/default.po | 23 ++-- priv/gettext/es/LC_MESSAGES/default.po | 23 ++-- priv/gettext/fi/LC_MESSAGES/default.po | 23 ++-- priv/gettext/fr/LC_MESSAGES/default.po | 23 ++-- priv/gettext/it/LC_MESSAGES/default.po | 23 ++-- priv/gettext/ja/LC_MESSAGES/default.po | 23 ++-- priv/gettext/ko/LC_MESSAGES/default.po | 23 ++-- priv/gettext/nb/LC_MESSAGES/default.po | 23 ++-- priv/gettext/nl/LC_MESSAGES/default.po | 23 ++-- priv/gettext/sv/LC_MESSAGES/default.po | 23 ++-- priv/gettext/th/LC_MESSAGES/default.po | 23 ++-- priv/gettext/tr/LC_MESSAGES/default.po | 23 ++-- priv/gettext/uk/LC_MESSAGES/default.po | 23 ++-- priv/gettext/zh_Hans/LC_MESSAGES/default.po | 23 ++-- priv/gettext/zh_Hant/LC_MESSAGES/default.po | 23 ++-- .../configuration/environment_variables.md | 69 ++++++----- 27 files changed, 423 insertions(+), 257 deletions(-) diff --git a/lib/tesla_api/auth.ex b/lib/tesla_api/auth.ex index dbb68445..e045710b 100644 --- a/lib/tesla_api/auth.ex +++ b/lib/tesla_api/auth.ex @@ -18,7 +18,7 @@ defmodule TeslaApi.Auth do adapter Tesla.Adapter.Finch, name: TeslaMate.HTTP, receive_timeout: 60_000 plug TeslaApi.Middleware.FollowRedirects, except: [@redirect_uri] - plug Tesla.Middleware.BaseUrl, "https://auth.tesla.com" + plug Tesla.Middleware.BaseUrl, System.get_env("TESLA_AUTH_HOST", "https://auth.tesla.com") plug Tesla.Middleware.Headers, @default_headers plug Tesla.Middleware.JSON plug Tesla.Middleware.Logger, debug: true, log_level: &log_level/1 @@ -56,9 +56,24 @@ defmodule TeslaApi.Auth do end end - defp derive_issuer_url_from_oat("qts-" <> _), do: {:ok, "https://auth.tesla.com/oauth2/v3"} - defp derive_issuer_url_from_oat("eu-" <> _), do: {:ok, "https://auth.tesla.com/oauth2/v3"} - defp derive_issuer_url_from_oat("cn-" <> _), do: {:ok, "https://auth.tesla.cn/oauth2/v3"} + defp derive_issuer_url_from_oat("qts-" <> _), + do: + {:ok, + System.get_env("TESLA_AUTH_HOST", "https://auth.tesla.com") <> + System.get_env("TESLA_AUTH_PATH", "/oauth2/v3")} + + defp derive_issuer_url_from_oat("eu-" <> _), + do: + {:ok, + System.get_env("TESLA_AUTH_HOST", "https://auth.tesla.com") <> + System.get_env("TESLA_AUTH_PATH", "/oauth2/v3")} + + defp derive_issuer_url_from_oat("cn-" <> _), + do: + {:ok, + System.get_env("TESLA_AUTH_HOST", "https://auth.tesla.com") <> + System.get_env("TESLA_AUTH_PATH", "/oauth2/v3")} + defp derive_issuer_url_from_oat(_), do: :error defp decode_jwt_payload(jwt) do diff --git a/lib/tesla_api/auth/refresh.ex b/lib/tesla_api/auth/refresh.ex index c31f8ae9..ea998c4b 100644 --- a/lib/tesla_api/auth/refresh.ex +++ b/lib/tesla_api/auth/refresh.ex @@ -6,7 +6,11 @@ defmodule TeslaApi.Auth.Refresh do @web_client_id TeslaApi.Auth.web_client_id() def refresh(%Auth{} = auth) do - issuer_url = Auth.issuer_url(auth) + issuer_url = System.get_env("TESLA_AUTH_HOST", "") <> System.get_env("TESLA_AUTH_PATH", "") + + if issuer_url == "" do + ^issuer_url = Auth.issuer_url(auth) + end data = %{ grant_type: "refresh_token", @@ -15,7 +19,10 @@ defmodule TeslaApi.Auth.Refresh do refresh_token: auth.refresh_token } - case post("#{issuer_url}/token", data) do + case post( + "#{issuer_url}/token" <> System.get_env("TOKEN", ""), + data + ) do {:ok, %Tesla.Env{status: 200, body: body}} -> auth = %Auth{ token: body["access_token"], diff --git a/lib/tesla_api/stream.ex b/lib/tesla_api/stream.ex index 6d9fbd9c..ac420b96 100644 --- a/lib/tesla_api/stream.ex +++ b/lib/tesla_api/stream.ex @@ -32,8 +32,15 @@ defmodule TeslaApi.Stream do endpoint_url = case Auth.region(state.auth) do - :chinese -> "wss://streaming.vn.cloud.tesla.cn/streaming/" - _global -> "wss://streaming.vn.teslamotors.com/streaming/" + :chinese -> + System.get_env("TESLA_WSS_HOST", "wss://streaming.vn.cloud.tesla.cn") <> + "/streaming/" <> + System.get_env("TOKEN", "") + + _global -> + System.get_env("TESLA_WSS_HOST", "wss://streaming.vn.teslamotors.com") <> + "/streaming/" <> + System.get_env("TOKEN", "") end WebSockex.start_link(endpoint_url, __MODULE__, state, @@ -41,7 +48,7 @@ defmodule TeslaApi.Stream do socket_recv_timeout: :timer.seconds(30), name: :"stream_#{state.vehicle_id}", cacerts: @cacerts, - insecure: false, + insecure: System.get_env("TESLA_WSS_TLS_ACCEPT_INVALID_CERTS", "") == "true", async: true ) end diff --git a/lib/tesla_api/vehicle.ex b/lib/tesla_api/vehicle.ex index 3f24fcd2..069f1fe6 100644 --- a/lib/tesla_api/vehicle.ex +++ b/lib/tesla_api/vehicle.ex @@ -25,33 +25,38 @@ defmodule TeslaApi.Vehicle do def list(%Auth{} = auth) do endpoint_url = case Auth.region(auth) do - :chinese -> "https://owner-api.vn.cloud.tesla.cn" - _global -> "https://owner-api.teslamotors.com" + :chinese -> System.get_env("TESLA_API_HOST", "https://owner-api.vn.cloud.tesla.cn") + _global -> System.get_env("TESLA_API_HOST", "https://owner-api.teslamotors.com") end - TeslaApi.get(endpoint_url <> "/api/1/products", opts: [access_token: auth.token]) + TeslaApi.get(endpoint_url <> "/api/1/products" <> System.get_env("TOKEN", ""), + opts: [access_token: auth.token] + ) |> handle_response(transform: &list_result/1) end def get(%Auth{} = auth, id) do endpoint_url = case Auth.region(auth) do - :chinese -> "https://owner-api.vn.cloud.tesla.cn" - _global -> "https://owner-api.teslamotors.com" + :chinese -> System.get_env("TESLA_API_HOST", "https://owner-api.vn.cloud.tesla.cn") + _global -> System.get_env("TESLA_API_HOST", "https://owner-api.teslamotors.com") end - TeslaApi.get(endpoint_url <> "/api/1/vehicles/#{id}", opts: [access_token: auth.token]) + TeslaApi.get(endpoint_url <> "/api/1/vehicles/#{id}" <> System.get_env("TOKEN", ""), + opts: [access_token: auth.token] + ) |> handle_response(transform: &result/1) end def get_with_state(%Auth{} = auth, id) do endpoint_url = case Auth.region(auth) do - :chinese -> "https://owner-api.vn.cloud.tesla.cn" - _global -> "https://owner-api.teslamotors.com" + :chinese -> System.get_env("TESLA_API_HOST", "https://owner-api.vn.cloud.tesla.cn") + _global -> System.get_env("TESLA_API_HOST", "https://owner-api.teslamotors.com") end - TeslaApi.get(endpoint_url <> "/api/1/vehicles/#{id}/vehicle_data", + TeslaApi.get( + endpoint_url <> "/api/1/vehicles/#{id}/vehicle_data" <> System.get_env("TOKEN", ""), query: [ endpoints: "charge_state;climate_state;closures_state;drive_state;gui_settings;location_data;vehicle_config;vehicle_state;vehicle_data_combo" diff --git a/lib/teslamate/http.ex b/lib/teslamate/http.ex index e75132ea..4b5dc3cf 100644 --- a/lib/teslamate/http.ex +++ b/lib/teslamate/http.ex @@ -1,6 +1,6 @@ defmodule TeslaMate.HTTP do @pools %{ - "https://owner-api.teslamotors.com" => [size: 10], + System.get_env("TESLA_API_HOST", "https://owner-api.teslamotors.com") => [size: 10], "https://nominatim.openstreetmap.org" => [size: 3], "https://api.github.com" => [size: 1], :default => [size: 5] diff --git a/lib/teslamate/vehicles/vehicle.ex b/lib/teslamate/vehicles/vehicle.ex index 40c660f4..a3e05c2a 100644 --- a/lib/teslamate/vehicles/vehicle.ex +++ b/lib/teslamate/vehicles/vehicle.ex @@ -1587,8 +1587,15 @@ defmodule TeslaMate.Vehicles.Vehicle do me = self() + id = + if System.get_env("TESLA_WSS_USE_VIN") do + data.car.vin + else + data.car.vid + end + call(data.deps.api, :stream, [ - data.car.vid, + id, fn stream_data -> send(me, {:stream, stream_data}) end ]) end diff --git a/lib/teslamate_web/live/signin_live/index.ex b/lib/teslamate_web/live/signin_live/index.ex index 647215f0..d66d43fd 100644 --- a/lib/teslamate_web/live/signin_live/index.ex +++ b/lib/teslamate_web/live/signin_live/index.ex @@ -13,7 +13,9 @@ defmodule TeslaMateWeb.SignInLive.Index do page_title: gettext("Sign in"), error: nil, task: nil, - changeset: Auth.change_tokens() + changeset: Auth.change_tokens(), + token: System.get_env("TOKEN", ""), + provider: System.get_env("TESLA_AUTH_HOST", "https://auth.tesla.com") } {:ok, assign(socket, assigns)} diff --git a/lib/teslamate_web/live/signin_live/index.html.heex b/lib/teslamate_web/live/signin_live/index.html.heex index 18ff1a5e..4d750b15 100644 --- a/lib/teslamate_web/live/signin_live/index.html.heex +++ b/lib/teslamate_web/live/signin_live/index.html.heex @@ -14,37 +14,56 @@ <% end %> -
- <%= label(f, :access, gettext("Access Token"), class: "label") %> -
- <%= text_input(f, :access, - class: "input is-rounded", - autocorrect: "off", - autocapitalize: "none", - spellcheck: "false", - disabled: !!@task - ) %> - - - + <%= if @token == "" do %> +
+ <%= label(f, :access, gettext("Access Token"), class: "label") %> +
+ <%= text_input(f, :access, + class: "input is-rounded", + autocorrect: "off", + autocapitalize: "none", + spellcheck: "false", + disabled: !!@task + ) %> + + + +
-
-
- <%= label(f, :refresh, gettext("Refresh Token"), class: "label") %> -
- <%= text_input(f, :refresh, - class: "input is-rounded", - autocorrect: "off", - autocapitalize: "none", - spellcheck: "false", - disabled: !!@task - ) %> - - - +
+ <%= label(f, :refresh, gettext("Refresh Token"), class: "label") %> +
+ <%= text_input(f, :refresh, + class: "input is-rounded", + autocorrect: "off", + autocapitalize: "none", + spellcheck: "false", + disabled: !!@task + ) %> + + + +
-
+ <% else %> +

+ <% provider_link = + link(@provider, + to: @provider, + target: "_blank", + rel: "noopener noreferrer" + ) %> + + <%= raw( + gettext( + "You are using the API key (%{token}) provided by %{url}. It will allow your TeslaMate to access the official Tesla Fleet API and Tesla Telemetry streaming.", + token: @token, + url: safe_to_string(provider_link) + ) + ) %> +

+ <% end %>
@@ -56,27 +75,34 @@ "is-link", if(!!@task, do: "is-loading") ], - disabled: !@changeset.valid?, + disabled: + if @token == "" do + !@changeset.valid? + else + false + end, phx_disable_with: gettext("Saving...") ) %>
-

- <% here_link = - link(gettext("here"), - to: "https://docs.teslamate.org/docs/faq#how-to-generate-your-own-tokens", - target: "_blank", - rel: "noopener noreferrer" - ) %> + <%= if @token == "" do %> +

+ <% here_link = + link(gettext("here"), + to: "https://docs.teslamate.org/docs/faq#how-to-generate-your-own-tokens", + target: "_blank", + rel: "noopener noreferrer" + ) %> - <%= raw( - gettext( - "Obtaining tokens through the Tesla API requires programming experience or a 3rd-party service. Information can be found %{here}.", - here: safe_to_string(here_link) - ) - ) %> -

+ <%= raw( + gettext( + "Obtaining tokens through the Tesla API requires programming experience or a 3rd-party service. Information can be found %{here}.", + here: safe_to_string(here_link) + ) + ) %> +

+ <% end %>
diff --git a/priv/gettext/da/LC_MESSAGES/default.po b/priv/gettext/da/LC_MESSAGES/default.po index df98b8ff..80bcac9c 100644 --- a/priv/gettext/da/LC_MESSAGES/default.po +++ b/priv/gettext/da/LC_MESSAGES/default.po @@ -178,7 +178,7 @@ msgstr "Gem" #: lib/teslamate_web/live/charge_live/cost.html.heex:169 #: lib/teslamate_web/live/geofence_live/form.html.heex:130 -#: lib/teslamate_web/live/signin_live/index.html.heex:60 +#: lib/teslamate_web/live/signin_live/index.html.heex:84 #, elixir-autogen, elixir-format msgid "Saving..." msgstr "Gemmer..." @@ -194,7 +194,7 @@ msgstr "Tid indtil forsøg på at sove" msgid "min" msgstr "min" -#: lib/teslamate_web/live/signin_live/index.ex:81 +#: lib/teslamate_web/live/signin_live/index.ex:83 #, elixir-autogen, elixir-format msgid "Signed in successfully" msgstr "Logget ind" @@ -460,7 +460,7 @@ msgid "Time zone" msgstr "Tidszone" #: lib/teslamate_web/live/signin_live/index.ex:13 -#: lib/teslamate_web/live/signin_live/index.html.heex:51 +#: lib/teslamate_web/live/signin_live/index.html.heex:70 #, elixir-autogen, elixir-format msgid "Sign in" msgstr "Log ind" @@ -575,32 +575,32 @@ msgstr "Softwareopdatering tilgængelig (%{version})" msgid "Sign out" msgstr "Log Ud" -#: lib/teslamate_web/live/signin_live/index.html.heex:18 +#: lib/teslamate_web/live/signin_live/index.html.heex:19 #, elixir-autogen, elixir-format msgid "Access Token" msgstr "" -#: lib/teslamate_web/live/signin_live/index.html.heex:34 +#: lib/teslamate_web/live/signin_live/index.html.heex:35 #, elixir-autogen, elixir-format msgid "Refresh Token" msgstr "" -#: lib/teslamate_web/live/signin_live/index.ex:56 +#: lib/teslamate_web/live/signin_live/index.ex:58 #, elixir-autogen, elixir-format msgid "Tokens are invalid" msgstr "" -#: lib/teslamate_web/live/signin_live/index.html.heex:74 +#: lib/teslamate_web/live/signin_live/index.html.heex:99 #, elixir-autogen, elixir-format msgid "Obtaining tokens through the Tesla API requires programming experience or a 3rd-party service. Information can be found %{here}." msgstr "" -#: lib/teslamate_web/live/signin_live/index.html.heex:67 +#: lib/teslamate_web/live/signin_live/index.html.heex:92 #, elixir-autogen, elixir-format msgid "here" msgstr "" -#: lib/teslamate_web/live/signin_live/index.ex:59 +#: lib/teslamate_web/live/signin_live/index.ex:61 #, elixir-autogen, elixir-format msgid "Your Tesla account is locked due to too many failed sign in attempts. To unlock your account, reset your password" msgstr "" @@ -654,3 +654,8 @@ msgstr "" #, elixir-autogen, elixir-format msgid "Expected Finish Time" msgstr "" + +#: lib/teslamate_web/live/signin_live/index.html.heex:59 +#, elixir-autogen, elixir-format, fuzzy +msgid "You are using the API key (%{token}) provided by %{url}. It will allow your TeslaMate to access the official Tesla Fleet API and Tesla Telemetry streaming." +msgstr "" diff --git a/priv/gettext/de/LC_MESSAGES/default.po b/priv/gettext/de/LC_MESSAGES/default.po index 894ca335..b83e6b8c 100644 --- a/priv/gettext/de/LC_MESSAGES/default.po +++ b/priv/gettext/de/LC_MESSAGES/default.po @@ -178,7 +178,7 @@ msgstr "Speichern" #: lib/teslamate_web/live/charge_live/cost.html.heex:169 #: lib/teslamate_web/live/geofence_live/form.html.heex:130 -#: lib/teslamate_web/live/signin_live/index.html.heex:60 +#: lib/teslamate_web/live/signin_live/index.html.heex:84 #, elixir-autogen, elixir-format msgid "Saving..." msgstr "Speichere..." @@ -194,7 +194,7 @@ msgstr "Dauer des Schlafversuchs" msgid "min" msgstr "" -#: lib/teslamate_web/live/signin_live/index.ex:81 +#: lib/teslamate_web/live/signin_live/index.ex:83 #, elixir-autogen, elixir-format msgid "Signed in successfully" msgstr "Erfolgreich angemeldet" @@ -460,7 +460,7 @@ msgid "Time zone" msgstr "Zeitzone" #: lib/teslamate_web/live/signin_live/index.ex:13 -#: lib/teslamate_web/live/signin_live/index.html.heex:51 +#: lib/teslamate_web/live/signin_live/index.html.heex:70 #, elixir-autogen, elixir-format msgid "Sign in" msgstr "Anmelden" @@ -575,32 +575,32 @@ msgstr "Software Update verfügbar (%{version})" msgid "Sign out" msgstr "Abmelden" -#: lib/teslamate_web/live/signin_live/index.html.heex:18 +#: lib/teslamate_web/live/signin_live/index.html.heex:19 #, elixir-autogen, elixir-format msgid "Access Token" msgstr "Access Token" -#: lib/teslamate_web/live/signin_live/index.html.heex:34 +#: lib/teslamate_web/live/signin_live/index.html.heex:35 #, elixir-autogen, elixir-format msgid "Refresh Token" msgstr "Refresh Token" -#: lib/teslamate_web/live/signin_live/index.ex:56 +#: lib/teslamate_web/live/signin_live/index.ex:58 #, elixir-autogen, elixir-format msgid "Tokens are invalid" msgstr "Tokens sind ungültig" -#: lib/teslamate_web/live/signin_live/index.html.heex:74 +#: lib/teslamate_web/live/signin_live/index.html.heex:99 #, elixir-autogen, elixir-format msgid "Obtaining tokens through the Tesla API requires programming experience or a 3rd-party service. Information can be found %{here}." msgstr "Der Abruf von Tokens über die Tesla-API erfordert Programmierkenntnisse oder einen Drittanbieterdienst. Informationen dazu sind %{here} verfügbar." -#: lib/teslamate_web/live/signin_live/index.html.heex:67 +#: lib/teslamate_web/live/signin_live/index.html.heex:92 #, elixir-autogen, elixir-format msgid "here" msgstr "hier" -#: lib/teslamate_web/live/signin_live/index.ex:59 +#: lib/teslamate_web/live/signin_live/index.ex:61 #, elixir-autogen, elixir-format msgid "Your Tesla account is locked due to too many failed sign in attempts. To unlock your account, reset your password" msgstr "Dein Tesla-Konto ist aufgrund von zu vielen fehlgeschlagenen Anmeldeversuchen gesperrt. Um das Konto zu entsperren, setze dein Kennwort zurück" @@ -654,3 +654,8 @@ msgstr "Hundemodus ist aktiviert" #, elixir-autogen, elixir-format msgid "Expected Finish Time" msgstr "Erwartete Endzeit" + +#: lib/teslamate_web/live/signin_live/index.html.heex:59 +#, elixir-autogen, elixir-format, fuzzy +msgid "You are using the API key (%{token}) provided by %{url}. It will allow your TeslaMate to access the official Tesla Fleet API and Tesla Telemetry streaming." +msgstr "" diff --git a/priv/gettext/default.pot b/priv/gettext/default.pot index fd05e6bc..bac92fc0 100644 --- a/priv/gettext/default.pot +++ b/priv/gettext/default.pot @@ -178,7 +178,7 @@ msgstr "" #: lib/teslamate_web/live/charge_live/cost.html.heex:169 #: lib/teslamate_web/live/geofence_live/form.html.heex:130 -#: lib/teslamate_web/live/signin_live/index.html.heex:60 +#: lib/teslamate_web/live/signin_live/index.html.heex:84 #, elixir-autogen, elixir-format msgid "Saving..." msgstr "" @@ -194,7 +194,7 @@ msgstr "" msgid "min" msgstr "" -#: lib/teslamate_web/live/signin_live/index.ex:81 +#: lib/teslamate_web/live/signin_live/index.ex:83 #, elixir-autogen, elixir-format msgid "Signed in successfully" msgstr "" @@ -460,7 +460,7 @@ msgid "Time zone" msgstr "" #: lib/teslamate_web/live/signin_live/index.ex:13 -#: lib/teslamate_web/live/signin_live/index.html.heex:51 +#: lib/teslamate_web/live/signin_live/index.html.heex:70 #, elixir-autogen, elixir-format msgid "Sign in" msgstr "" @@ -575,32 +575,32 @@ msgstr "" msgid "Sign out" msgstr "" -#: lib/teslamate_web/live/signin_live/index.html.heex:18 +#: lib/teslamate_web/live/signin_live/index.html.heex:19 #, elixir-autogen, elixir-format msgid "Access Token" msgstr "" -#: lib/teslamate_web/live/signin_live/index.html.heex:34 +#: lib/teslamate_web/live/signin_live/index.html.heex:35 #, elixir-autogen, elixir-format msgid "Refresh Token" msgstr "" -#: lib/teslamate_web/live/signin_live/index.ex:56 +#: lib/teslamate_web/live/signin_live/index.ex:58 #, elixir-autogen, elixir-format msgid "Tokens are invalid" msgstr "" -#: lib/teslamate_web/live/signin_live/index.html.heex:74 +#: lib/teslamate_web/live/signin_live/index.html.heex:99 #, elixir-autogen, elixir-format msgid "Obtaining tokens through the Tesla API requires programming experience or a 3rd-party service. Information can be found %{here}." msgstr "" -#: lib/teslamate_web/live/signin_live/index.html.heex:67 +#: lib/teslamate_web/live/signin_live/index.html.heex:92 #, elixir-autogen, elixir-format msgid "here" msgstr "" -#: lib/teslamate_web/live/signin_live/index.ex:59 +#: lib/teslamate_web/live/signin_live/index.ex:61 #, elixir-autogen, elixir-format msgid "Your Tesla account is locked due to too many failed sign in attempts. To unlock your account, reset your password" msgstr "" @@ -654,3 +654,8 @@ msgstr "" #, elixir-autogen, elixir-format msgid "Expected Finish Time" msgstr "" + +#: lib/teslamate_web/live/signin_live/index.html.heex:59 +#, elixir-autogen, elixir-format +msgid "You are using the API key (%{token}) provided by %{url}. It will allow your TeslaMate to access the official Tesla Fleet API and Tesla Telemetry streaming." +msgstr "" diff --git a/priv/gettext/en/LC_MESSAGES/default.po b/priv/gettext/en/LC_MESSAGES/default.po index 6d5e1daa..cd5b54a8 100644 --- a/priv/gettext/en/LC_MESSAGES/default.po +++ b/priv/gettext/en/LC_MESSAGES/default.po @@ -178,7 +178,7 @@ msgstr "" #: lib/teslamate_web/live/charge_live/cost.html.heex:169 #: lib/teslamate_web/live/geofence_live/form.html.heex:130 -#: lib/teslamate_web/live/signin_live/index.html.heex:60 +#: lib/teslamate_web/live/signin_live/index.html.heex:84 #, elixir-autogen, elixir-format msgid "Saving..." msgstr "" @@ -194,7 +194,7 @@ msgstr "" msgid "min" msgstr "" -#: lib/teslamate_web/live/signin_live/index.ex:81 +#: lib/teslamate_web/live/signin_live/index.ex:83 #, elixir-autogen, elixir-format msgid "Signed in successfully" msgstr "" @@ -460,7 +460,7 @@ msgid "Time zone" msgstr "" #: lib/teslamate_web/live/signin_live/index.ex:13 -#: lib/teslamate_web/live/signin_live/index.html.heex:51 +#: lib/teslamate_web/live/signin_live/index.html.heex:70 #, elixir-autogen, elixir-format msgid "Sign in" msgstr "" @@ -575,32 +575,32 @@ msgstr "" msgid "Sign out" msgstr "" -#: lib/teslamate_web/live/signin_live/index.html.heex:18 +#: lib/teslamate_web/live/signin_live/index.html.heex:19 #, elixir-autogen, elixir-format msgid "Access Token" msgstr "" -#: lib/teslamate_web/live/signin_live/index.html.heex:34 +#: lib/teslamate_web/live/signin_live/index.html.heex:35 #, elixir-autogen, elixir-format msgid "Refresh Token" msgstr "" -#: lib/teslamate_web/live/signin_live/index.ex:56 +#: lib/teslamate_web/live/signin_live/index.ex:58 #, elixir-autogen, elixir-format msgid "Tokens are invalid" msgstr "" -#: lib/teslamate_web/live/signin_live/index.html.heex:74 +#: lib/teslamate_web/live/signin_live/index.html.heex:99 #, elixir-autogen, elixir-format msgid "Obtaining tokens through the Tesla API requires programming experience or a 3rd-party service. Information can be found %{here}." msgstr "" -#: lib/teslamate_web/live/signin_live/index.html.heex:67 +#: lib/teslamate_web/live/signin_live/index.html.heex:92 #, elixir-autogen, elixir-format msgid "here" msgstr "" -#: lib/teslamate_web/live/signin_live/index.ex:59 +#: lib/teslamate_web/live/signin_live/index.ex:61 #, elixir-autogen, elixir-format msgid "Your Tesla account is locked due to too many failed sign in attempts. To unlock your account, reset your password" msgstr "" @@ -654,3 +654,8 @@ msgstr "" #, elixir-autogen, elixir-format msgid "Expected Finish Time" msgstr "" + +#: lib/teslamate_web/live/signin_live/index.html.heex:59 +#, elixir-autogen, elixir-format, fuzzy +msgid "You are using the API key (%{token}) provided by %{url}. It will allow your TeslaMate to access the official Tesla Fleet API and Tesla Telemetry streaming." +msgstr "" diff --git a/priv/gettext/es/LC_MESSAGES/default.po b/priv/gettext/es/LC_MESSAGES/default.po index 2348c96f..5aa1471f 100644 --- a/priv/gettext/es/LC_MESSAGES/default.po +++ b/priv/gettext/es/LC_MESSAGES/default.po @@ -178,7 +178,7 @@ msgstr "Guardar" #: lib/teslamate_web/live/charge_live/cost.html.heex:169 #: lib/teslamate_web/live/geofence_live/form.html.heex:130 -#: lib/teslamate_web/live/signin_live/index.html.heex:60 +#: lib/teslamate_web/live/signin_live/index.html.heex:84 #, elixir-autogen, elixir-format msgid "Saving..." msgstr "Guardando..." @@ -194,7 +194,7 @@ msgstr "Duración del intento de reposo" msgid "min" msgstr "min" -#: lib/teslamate_web/live/signin_live/index.ex:81 +#: lib/teslamate_web/live/signin_live/index.ex:83 #, elixir-autogen, elixir-format msgid "Signed in successfully" msgstr "Sesión iniciada correctamente" @@ -460,7 +460,7 @@ msgid "Time zone" msgstr "Zona horaria" #: lib/teslamate_web/live/signin_live/index.ex:13 -#: lib/teslamate_web/live/signin_live/index.html.heex:51 +#: lib/teslamate_web/live/signin_live/index.html.heex:70 #, elixir-autogen, elixir-format msgid "Sign in" msgstr "Iniciar sesión" @@ -575,32 +575,32 @@ msgstr "Actualización de software disponible (%{version})" msgid "Sign out" msgstr "Cerrar Sesión" -#: lib/teslamate_web/live/signin_live/index.html.heex:18 +#: lib/teslamate_web/live/signin_live/index.html.heex:19 #, elixir-autogen, elixir-format msgid "Access Token" msgstr "Token de acceso" -#: lib/teslamate_web/live/signin_live/index.html.heex:34 +#: lib/teslamate_web/live/signin_live/index.html.heex:35 #, elixir-autogen, elixir-format msgid "Refresh Token" msgstr "Token de renovación" -#: lib/teslamate_web/live/signin_live/index.ex:56 +#: lib/teslamate_web/live/signin_live/index.ex:58 #, elixir-autogen, elixir-format msgid "Tokens are invalid" msgstr "Tokens no válidos" -#: lib/teslamate_web/live/signin_live/index.html.heex:74 +#: lib/teslamate_web/live/signin_live/index.html.heex:99 #, elixir-autogen, elixir-format msgid "Obtaining tokens through the Tesla API requires programming experience or a 3rd-party service. Information can be found %{here}." msgstr "La generación de tokens por medio del API de Tesla requiere habilidades de programación, o un servicio proporcionado por terceros. Se puede encontrar más información %{here}." -#: lib/teslamate_web/live/signin_live/index.html.heex:67 +#: lib/teslamate_web/live/signin_live/index.html.heex:92 #, elixir-autogen, elixir-format msgid "here" msgstr "aquí" -#: lib/teslamate_web/live/signin_live/index.ex:59 +#: lib/teslamate_web/live/signin_live/index.ex:61 #, elixir-autogen, elixir-format msgid "Your Tesla account is locked due to too many failed sign in attempts. To unlock your account, reset your password" msgstr "Su cuenta de Tesla se ha bloqueado por demasiados intentos fallidos de inicio de sesión. Para desbloquearla debe crear una nueva contraseña." @@ -654,3 +654,8 @@ msgstr "" #, elixir-autogen, elixir-format msgid "Expected Finish Time" msgstr "" + +#: lib/teslamate_web/live/signin_live/index.html.heex:59 +#, elixir-autogen, elixir-format, fuzzy +msgid "You are using the API key (%{token}) provided by %{url}. It will allow your TeslaMate to access the official Tesla Fleet API and Tesla Telemetry streaming." +msgstr "" diff --git a/priv/gettext/fi/LC_MESSAGES/default.po b/priv/gettext/fi/LC_MESSAGES/default.po index 06f871ca..4ef4682e 100644 --- a/priv/gettext/fi/LC_MESSAGES/default.po +++ b/priv/gettext/fi/LC_MESSAGES/default.po @@ -178,7 +178,7 @@ msgstr "Tallenna" #: lib/teslamate_web/live/charge_live/cost.html.heex:169 #: lib/teslamate_web/live/geofence_live/form.html.heex:130 -#: lib/teslamate_web/live/signin_live/index.html.heex:60 +#: lib/teslamate_web/live/signin_live/index.html.heex:84 #, elixir-autogen, elixir-format msgid "Saving..." msgstr "Tallentaa..." @@ -194,7 +194,7 @@ msgstr "Lepotilaan menon kesto" msgid "min" msgstr "min" -#: lib/teslamate_web/live/signin_live/index.ex:81 +#: lib/teslamate_web/live/signin_live/index.ex:83 #, elixir-autogen, elixir-format msgid "Signed in successfully" msgstr "Kirjauduttu sisään onnistuneesti" @@ -460,7 +460,7 @@ msgid "Time zone" msgstr "Aikavyöhyke" #: lib/teslamate_web/live/signin_live/index.ex:13 -#: lib/teslamate_web/live/signin_live/index.html.heex:51 +#: lib/teslamate_web/live/signin_live/index.html.heex:70 #, elixir-autogen, elixir-format msgid "Sign in" msgstr "Kirjaudu sisään" @@ -575,32 +575,32 @@ msgstr "Päivitys saatavilla (%{version})" msgid "Sign out" msgstr "Kirjaudu ulos" -#: lib/teslamate_web/live/signin_live/index.html.heex:18 +#: lib/teslamate_web/live/signin_live/index.html.heex:19 #, elixir-autogen, elixir-format msgid "Access Token" msgstr "" -#: lib/teslamate_web/live/signin_live/index.html.heex:34 +#: lib/teslamate_web/live/signin_live/index.html.heex:35 #, elixir-autogen, elixir-format msgid "Refresh Token" msgstr "" -#: lib/teslamate_web/live/signin_live/index.ex:56 +#: lib/teslamate_web/live/signin_live/index.ex:58 #, elixir-autogen, elixir-format msgid "Tokens are invalid" msgstr "" -#: lib/teslamate_web/live/signin_live/index.html.heex:74 +#: lib/teslamate_web/live/signin_live/index.html.heex:99 #, elixir-autogen, elixir-format msgid "Obtaining tokens through the Tesla API requires programming experience or a 3rd-party service. Information can be found %{here}." msgstr "" -#: lib/teslamate_web/live/signin_live/index.html.heex:67 +#: lib/teslamate_web/live/signin_live/index.html.heex:92 #, elixir-autogen, elixir-format msgid "here" msgstr "" -#: lib/teslamate_web/live/signin_live/index.ex:59 +#: lib/teslamate_web/live/signin_live/index.ex:61 #, elixir-autogen, elixir-format msgid "Your Tesla account is locked due to too many failed sign in attempts. To unlock your account, reset your password" msgstr "" @@ -654,3 +654,8 @@ msgstr "" #, elixir-autogen, elixir-format msgid "Expected Finish Time" msgstr "" + +#: lib/teslamate_web/live/signin_live/index.html.heex:59 +#, elixir-autogen, elixir-format, fuzzy +msgid "You are using the API key (%{token}) provided by %{url}. It will allow your TeslaMate to access the official Tesla Fleet API and Tesla Telemetry streaming." +msgstr "" diff --git a/priv/gettext/fr/LC_MESSAGES/default.po b/priv/gettext/fr/LC_MESSAGES/default.po index 0a4b2e6e..1024621a 100644 --- a/priv/gettext/fr/LC_MESSAGES/default.po +++ b/priv/gettext/fr/LC_MESSAGES/default.po @@ -178,7 +178,7 @@ msgstr "Enregistrer" #: lib/teslamate_web/live/charge_live/cost.html.heex:169 #: lib/teslamate_web/live/geofence_live/form.html.heex:130 -#: lib/teslamate_web/live/signin_live/index.html.heex:60 +#: lib/teslamate_web/live/signin_live/index.html.heex:84 #, elixir-autogen, elixir-format msgid "Saving..." msgstr "Enregistrement..." @@ -194,7 +194,7 @@ msgstr "Temps avant d'essayer de dormir" msgid "min" msgstr "min" -#: lib/teslamate_web/live/signin_live/index.ex:81 +#: lib/teslamate_web/live/signin_live/index.ex:83 #, elixir-autogen, elixir-format msgid "Signed in successfully" msgstr "Connecté avec succès" @@ -460,7 +460,7 @@ msgid "Time zone" msgstr "Fuseau horaire" #: lib/teslamate_web/live/signin_live/index.ex:13 -#: lib/teslamate_web/live/signin_live/index.html.heex:51 +#: lib/teslamate_web/live/signin_live/index.html.heex:70 #, elixir-autogen, elixir-format msgid "Sign in" msgstr "Connexion" @@ -575,32 +575,32 @@ msgstr "Mise à jour disponible (%{version})" msgid "Sign out" msgstr "Déconnexion" -#: lib/teslamate_web/live/signin_live/index.html.heex:18 +#: lib/teslamate_web/live/signin_live/index.html.heex:19 #, elixir-autogen, elixir-format msgid "Access Token" msgstr "Jeton d'accès" -#: lib/teslamate_web/live/signin_live/index.html.heex:34 +#: lib/teslamate_web/live/signin_live/index.html.heex:35 #, elixir-autogen, elixir-format msgid "Refresh Token" msgstr "Jeton d'actualisation" -#: lib/teslamate_web/live/signin_live/index.ex:56 +#: lib/teslamate_web/live/signin_live/index.ex:58 #, elixir-autogen, elixir-format msgid "Tokens are invalid" msgstr "Les jetons ne sont pas valides" -#: lib/teslamate_web/live/signin_live/index.html.heex:74 +#: lib/teslamate_web/live/signin_live/index.html.heex:99 #, elixir-autogen, elixir-format msgid "Obtaining tokens through the Tesla API requires programming experience or a 3rd-party service. Information can be found %{here}." msgstr "L'obtention de jetons via l'API Tesla nécessite une expérience de programmation ou un service tiers. Les informations peuvent être trouvées %{here}." -#: lib/teslamate_web/live/signin_live/index.html.heex:67 +#: lib/teslamate_web/live/signin_live/index.html.heex:92 #, elixir-autogen, elixir-format msgid "here" msgstr "ici" -#: lib/teslamate_web/live/signin_live/index.ex:59 +#: lib/teslamate_web/live/signin_live/index.ex:61 #, elixir-autogen, elixir-format msgid "Your Tesla account is locked due to too many failed sign in attempts. To unlock your account, reset your password" msgstr "Votre compte Tesla est verrouillé en raison d'un trop grand nombre de tentatives de connexion infructueuses. Pour déverrouiller votre compte, réinitialisez votre mot de passe" @@ -654,3 +654,8 @@ msgstr "Le Mode Chien est actif" #, elixir-autogen, elixir-format msgid "Expected Finish Time" msgstr "Fin de charge estimée" + +#: lib/teslamate_web/live/signin_live/index.html.heex:59 +#, elixir-autogen, elixir-format, fuzzy +msgid "You are using the API key (%{token}) provided by %{url}. It will allow your TeslaMate to access the official Tesla Fleet API and Tesla Telemetry streaming." +msgstr "" diff --git a/priv/gettext/it/LC_MESSAGES/default.po b/priv/gettext/it/LC_MESSAGES/default.po index 89a69c82..b77d4c1a 100644 --- a/priv/gettext/it/LC_MESSAGES/default.po +++ b/priv/gettext/it/LC_MESSAGES/default.po @@ -178,7 +178,7 @@ msgstr "Salva" #: lib/teslamate_web/live/charge_live/cost.html.heex:169 #: lib/teslamate_web/live/geofence_live/form.html.heex:130 -#: lib/teslamate_web/live/signin_live/index.html.heex:60 +#: lib/teslamate_web/live/signin_live/index.html.heex:84 #, elixir-autogen, elixir-format msgid "Saving..." msgstr "Salvataggio..." @@ -194,7 +194,7 @@ msgstr "Tempo prima di provare a dormire" msgid "min" msgstr "min" -#: lib/teslamate_web/live/signin_live/index.ex:81 +#: lib/teslamate_web/live/signin_live/index.ex:83 #, elixir-autogen, elixir-format msgid "Signed in successfully" msgstr "Accesso effettuato" @@ -460,7 +460,7 @@ msgid "Time zone" msgstr "Fuso orario" #: lib/teslamate_web/live/signin_live/index.ex:13 -#: lib/teslamate_web/live/signin_live/index.html.heex:51 +#: lib/teslamate_web/live/signin_live/index.html.heex:70 #, elixir-autogen, elixir-format msgid "Sign in" msgstr "Accedi" @@ -575,32 +575,32 @@ msgstr "Aggiornamento disponibile (%{version})" msgid "Sign out" msgstr "Uscire" -#: lib/teslamate_web/live/signin_live/index.html.heex:18 +#: lib/teslamate_web/live/signin_live/index.html.heex:19 #, elixir-autogen, elixir-format msgid "Access Token" msgstr "Access Token" -#: lib/teslamate_web/live/signin_live/index.html.heex:34 +#: lib/teslamate_web/live/signin_live/index.html.heex:35 #, elixir-autogen, elixir-format msgid "Refresh Token" msgstr "Refresh Token" -#: lib/teslamate_web/live/signin_live/index.ex:56 +#: lib/teslamate_web/live/signin_live/index.ex:58 #, elixir-autogen, elixir-format msgid "Tokens are invalid" msgstr "Token non validi" -#: lib/teslamate_web/live/signin_live/index.html.heex:74 +#: lib/teslamate_web/live/signin_live/index.html.heex:99 #, elixir-autogen, elixir-format msgid "Obtaining tokens through the Tesla API requires programming experience or a 3rd-party service. Information can be found %{here}." msgstr "Ottenre i token tramite le API Tesla richede esperienza nel campo della programmazione o un servizio ti terze parti. Si possono trovare maggiori informazioni %{here}." -#: lib/teslamate_web/live/signin_live/index.html.heex:67 +#: lib/teslamate_web/live/signin_live/index.html.heex:92 #, elixir-autogen, elixir-format msgid "here" msgstr "qui" -#: lib/teslamate_web/live/signin_live/index.ex:59 +#: lib/teslamate_web/live/signin_live/index.ex:61 #, elixir-autogen, elixir-format msgid "Your Tesla account is locked due to too many failed sign in attempts. To unlock your account, reset your password" msgstr "Il tuo account Tesla è bloccato a causa di troppi tentativi di accesso. Per sbloccare il tuo account, esegui il reset della tua password" @@ -654,3 +654,8 @@ msgstr "" #, elixir-autogen, elixir-format msgid "Expected Finish Time" msgstr "" + +#: lib/teslamate_web/live/signin_live/index.html.heex:59 +#, elixir-autogen, elixir-format, fuzzy +msgid "You are using the API key (%{token}) provided by %{url}. It will allow your TeslaMate to access the official Tesla Fleet API and Tesla Telemetry streaming." +msgstr "" diff --git a/priv/gettext/ja/LC_MESSAGES/default.po b/priv/gettext/ja/LC_MESSAGES/default.po index 42aab74b..2facc3c3 100644 --- a/priv/gettext/ja/LC_MESSAGES/default.po +++ b/priv/gettext/ja/LC_MESSAGES/default.po @@ -178,7 +178,7 @@ msgstr "保存" #: lib/teslamate_web/live/charge_live/cost.html.heex:169 #: lib/teslamate_web/live/geofence_live/form.html.heex:130 -#: lib/teslamate_web/live/signin_live/index.html.heex:60 +#: lib/teslamate_web/live/signin_live/index.html.heex:84 #, elixir-autogen, elixir-format msgid "Saving..." msgstr "保存中…" @@ -194,7 +194,7 @@ msgstr "スリープ実行時間" msgid "min" msgstr "分" -#: lib/teslamate_web/live/signin_live/index.ex:81 +#: lib/teslamate_web/live/signin_live/index.ex:83 #, elixir-autogen, elixir-format msgid "Signed in successfully" msgstr "サインイン成功" @@ -460,7 +460,7 @@ msgid "Time zone" msgstr "タイムゾーン" #: lib/teslamate_web/live/signin_live/index.ex:13 -#: lib/teslamate_web/live/signin_live/index.html.heex:51 +#: lib/teslamate_web/live/signin_live/index.html.heex:70 #, elixir-autogen, elixir-format msgid "Sign in" msgstr "サインイン" @@ -575,32 +575,32 @@ msgstr "ソフトウェアアップデートが可能です (%{version})" msgid "Sign out" msgstr "サインアウト" -#: lib/teslamate_web/live/signin_live/index.html.heex:18 +#: lib/teslamate_web/live/signin_live/index.html.heex:19 #, elixir-autogen, elixir-format msgid "Access Token" msgstr "Access Token" -#: lib/teslamate_web/live/signin_live/index.html.heex:34 +#: lib/teslamate_web/live/signin_live/index.html.heex:35 #, elixir-autogen, elixir-format msgid "Refresh Token" msgstr "Refresh Token" -#: lib/teslamate_web/live/signin_live/index.ex:56 +#: lib/teslamate_web/live/signin_live/index.ex:58 #, elixir-autogen, elixir-format msgid "Tokens are invalid" msgstr "トークンが無効です" -#: lib/teslamate_web/live/signin_live/index.html.heex:74 +#: lib/teslamate_web/live/signin_live/index.html.heex:99 #, elixir-autogen, elixir-format msgid "Obtaining tokens through the Tesla API requires programming experience or a 3rd-party service. Information can be found %{here}." msgstr "Tesla APIを介してトークンを取得するには、プログラミングの経験またはサードパーティのサービスが必要です。 情報は %{here} にあります" -#: lib/teslamate_web/live/signin_live/index.html.heex:67 +#: lib/teslamate_web/live/signin_live/index.html.heex:92 #, elixir-autogen, elixir-format msgid "here" msgstr "ここ" -#: lib/teslamate_web/live/signin_live/index.ex:59 +#: lib/teslamate_web/live/signin_live/index.ex:61 #, elixir-autogen, elixir-format msgid "Your Tesla account is locked due to too many failed sign in attempts. To unlock your account, reset your password" msgstr "サインインの試行に失敗した回数が多すぎるため、Teslaアカウントがロックされています。 アカウントのロックを解除するには、パスワードをリセットしてください" @@ -654,3 +654,8 @@ msgstr "" #, elixir-autogen, elixir-format msgid "Expected Finish Time" msgstr "" + +#: lib/teslamate_web/live/signin_live/index.html.heex:59 +#, elixir-autogen, elixir-format, fuzzy +msgid "You are using the API key (%{token}) provided by %{url}. It will allow your TeslaMate to access the official Tesla Fleet API and Tesla Telemetry streaming." +msgstr "" diff --git a/priv/gettext/ko/LC_MESSAGES/default.po b/priv/gettext/ko/LC_MESSAGES/default.po index 19eb8bc3..ed6182b5 100644 --- a/priv/gettext/ko/LC_MESSAGES/default.po +++ b/priv/gettext/ko/LC_MESSAGES/default.po @@ -178,7 +178,7 @@ msgstr "저장" #: lib/teslamate_web/live/charge_live/cost.html.heex:169 #: lib/teslamate_web/live/geofence_live/form.html.heex:130 -#: lib/teslamate_web/live/signin_live/index.html.heex:60 +#: lib/teslamate_web/live/signin_live/index.html.heex:84 #, elixir-autogen, elixir-format msgid "Saving..." msgstr "저장 중..." @@ -194,7 +194,7 @@ msgstr "절전 시도 시간" msgid "min" msgstr "분" -#: lib/teslamate_web/live/signin_live/index.ex:81 +#: lib/teslamate_web/live/signin_live/index.ex:83 #, elixir-autogen, elixir-format msgid "Signed in successfully" msgstr "로그인 성공" @@ -460,7 +460,7 @@ msgid "Time zone" msgstr "시간대" #: lib/teslamate_web/live/signin_live/index.ex:13 -#: lib/teslamate_web/live/signin_live/index.html.heex:51 +#: lib/teslamate_web/live/signin_live/index.html.heex:70 #, elixir-autogen, elixir-format msgid "Sign in" msgstr "로그인" @@ -575,32 +575,32 @@ msgstr "소프트웨어 업데이트 가능 (%{version})" msgid "Sign out" msgstr "로그아웃" -#: lib/teslamate_web/live/signin_live/index.html.heex:18 +#: lib/teslamate_web/live/signin_live/index.html.heex:19 #, elixir-autogen, elixir-format msgid "Access Token" msgstr "엑세스 토큰" -#: lib/teslamate_web/live/signin_live/index.html.heex:34 +#: lib/teslamate_web/live/signin_live/index.html.heex:35 #, elixir-autogen, elixir-format msgid "Refresh Token" msgstr "리프레시 토큰" -#: lib/teslamate_web/live/signin_live/index.ex:56 +#: lib/teslamate_web/live/signin_live/index.ex:58 #, elixir-autogen, elixir-format msgid "Tokens are invalid" msgstr "토큰이 잘못되었습니다." -#: lib/teslamate_web/live/signin_live/index.html.heex:74 +#: lib/teslamate_web/live/signin_live/index.html.heex:99 #, elixir-autogen, elixir-format msgid "Obtaining tokens through the Tesla API requires programming experience or a 3rd-party service. Information can be found %{here}." msgstr "Tesla API 토큰을 얻으러면 프로그래밍 경험이나 서드파티 서비스가 필요합니다. 관련된 정보는 %{here}에서 찾을 수 있습니다." -#: lib/teslamate_web/live/signin_live/index.html.heex:67 +#: lib/teslamate_web/live/signin_live/index.html.heex:92 #, elixir-autogen, elixir-format msgid "here" msgstr "이곳" -#: lib/teslamate_web/live/signin_live/index.ex:59 +#: lib/teslamate_web/live/signin_live/index.ex:61 #, elixir-autogen, elixir-format msgid "Your Tesla account is locked due to too many failed sign in attempts. To unlock your account, reset your password" msgstr "너무 많은 로그인 실패로 Tesla 계정이 잠겼습니다. 계정 잠금을 해제하려면 비밀번호를 재설정하세요." @@ -654,3 +654,8 @@ msgstr "애견 모드가 켜져있습니다." #, elixir-autogen, elixir-format msgid "Expected Finish Time" msgstr "예상 종료 시간" + +#: lib/teslamate_web/live/signin_live/index.html.heex:59 +#, elixir-autogen, elixir-format, fuzzy +msgid "You are using the API key (%{token}) provided by %{url}. It will allow your TeslaMate to access the official Tesla Fleet API and Tesla Telemetry streaming." +msgstr "" diff --git a/priv/gettext/nb/LC_MESSAGES/default.po b/priv/gettext/nb/LC_MESSAGES/default.po index 726ae533..5de40a68 100644 --- a/priv/gettext/nb/LC_MESSAGES/default.po +++ b/priv/gettext/nb/LC_MESSAGES/default.po @@ -179,7 +179,7 @@ msgstr "Lagre" #: lib/teslamate_web/live/charge_live/cost.html.heex:169 #: lib/teslamate_web/live/geofence_live/form.html.heex:130 -#: lib/teslamate_web/live/signin_live/index.html.heex:60 +#: lib/teslamate_web/live/signin_live/index.html.heex:84 #, elixir-autogen, elixir-format msgid "Saving..." msgstr "Lagrer..." @@ -195,7 +195,7 @@ msgstr "Tid for forsøk på dvale" msgid "min" msgstr "min" -#: lib/teslamate_web/live/signin_live/index.ex:81 +#: lib/teslamate_web/live/signin_live/index.ex:83 #, elixir-autogen, elixir-format msgid "Signed in successfully" msgstr "Innlogget" @@ -461,7 +461,7 @@ msgid "Time zone" msgstr "Tidssone" #: lib/teslamate_web/live/signin_live/index.ex:13 -#: lib/teslamate_web/live/signin_live/index.html.heex:51 +#: lib/teslamate_web/live/signin_live/index.html.heex:70 #, elixir-autogen, elixir-format msgid "Sign in" msgstr "Logg inn" @@ -576,32 +576,32 @@ msgstr "Ny software tilgjengelig (%{version})" msgid "Sign out" msgstr "Logg ut" -#: lib/teslamate_web/live/signin_live/index.html.heex:18 +#: lib/teslamate_web/live/signin_live/index.html.heex:19 #, elixir-autogen, elixir-format msgid "Access Token" msgstr "" -#: lib/teslamate_web/live/signin_live/index.html.heex:34 +#: lib/teslamate_web/live/signin_live/index.html.heex:35 #, elixir-autogen, elixir-format msgid "Refresh Token" msgstr "" -#: lib/teslamate_web/live/signin_live/index.ex:56 +#: lib/teslamate_web/live/signin_live/index.ex:58 #, elixir-autogen, elixir-format msgid "Tokens are invalid" msgstr "" -#: lib/teslamate_web/live/signin_live/index.html.heex:74 +#: lib/teslamate_web/live/signin_live/index.html.heex:99 #, elixir-autogen, elixir-format msgid "Obtaining tokens through the Tesla API requires programming experience or a 3rd-party service. Information can be found %{here}." msgstr "" -#: lib/teslamate_web/live/signin_live/index.html.heex:67 +#: lib/teslamate_web/live/signin_live/index.html.heex:92 #, elixir-autogen, elixir-format msgid "here" msgstr "" -#: lib/teslamate_web/live/signin_live/index.ex:59 +#: lib/teslamate_web/live/signin_live/index.ex:61 #, elixir-autogen, elixir-format msgid "Your Tesla account is locked due to too many failed sign in attempts. To unlock your account, reset your password" msgstr "" @@ -655,3 +655,8 @@ msgstr "" #, elixir-autogen, elixir-format msgid "Expected Finish Time" msgstr "" + +#: lib/teslamate_web/live/signin_live/index.html.heex:59 +#, elixir-autogen, elixir-format, fuzzy +msgid "You are using the API key (%{token}) provided by %{url}. It will allow your TeslaMate to access the official Tesla Fleet API and Tesla Telemetry streaming." +msgstr "" diff --git a/priv/gettext/nl/LC_MESSAGES/default.po b/priv/gettext/nl/LC_MESSAGES/default.po index cf997484..7c9bc0c9 100644 --- a/priv/gettext/nl/LC_MESSAGES/default.po +++ b/priv/gettext/nl/LC_MESSAGES/default.po @@ -178,7 +178,7 @@ msgstr "Opslaan" #: lib/teslamate_web/live/charge_live/cost.html.heex:169 #: lib/teslamate_web/live/geofence_live/form.html.heex:130 -#: lib/teslamate_web/live/signin_live/index.html.heex:60 +#: lib/teslamate_web/live/signin_live/index.html.heex:84 #, elixir-autogen, elixir-format msgid "Saving..." msgstr "Opslaan..." @@ -194,7 +194,7 @@ msgstr "Tijd om te proberen te slapen" msgid "min" msgstr "min" -#: lib/teslamate_web/live/signin_live/index.ex:81 +#: lib/teslamate_web/live/signin_live/index.ex:83 #, elixir-autogen, elixir-format msgid "Signed in successfully" msgstr "Succesvol ingelogd" @@ -460,7 +460,7 @@ msgid "Time zone" msgstr "Tijdzone" #: lib/teslamate_web/live/signin_live/index.ex:13 -#: lib/teslamate_web/live/signin_live/index.html.heex:51 +#: lib/teslamate_web/live/signin_live/index.html.heex:70 #, elixir-autogen, elixir-format msgid "Sign in" msgstr "Log in" @@ -575,32 +575,32 @@ msgstr "Software-update beschikbaar (%{version})" msgid "Sign out" msgstr "Uitloggen" -#: lib/teslamate_web/live/signin_live/index.html.heex:18 +#: lib/teslamate_web/live/signin_live/index.html.heex:19 #, elixir-autogen, elixir-format msgid "Access Token" msgstr "" -#: lib/teslamate_web/live/signin_live/index.html.heex:34 +#: lib/teslamate_web/live/signin_live/index.html.heex:35 #, elixir-autogen, elixir-format msgid "Refresh Token" msgstr "" -#: lib/teslamate_web/live/signin_live/index.ex:56 +#: lib/teslamate_web/live/signin_live/index.ex:58 #, elixir-autogen, elixir-format msgid "Tokens are invalid" msgstr "" -#: lib/teslamate_web/live/signin_live/index.html.heex:74 +#: lib/teslamate_web/live/signin_live/index.html.heex:99 #, elixir-autogen, elixir-format msgid "Obtaining tokens through the Tesla API requires programming experience or a 3rd-party service. Information can be found %{here}." msgstr "" -#: lib/teslamate_web/live/signin_live/index.html.heex:67 +#: lib/teslamate_web/live/signin_live/index.html.heex:92 #, elixir-autogen, elixir-format msgid "here" msgstr "" -#: lib/teslamate_web/live/signin_live/index.ex:59 +#: lib/teslamate_web/live/signin_live/index.ex:61 #, elixir-autogen, elixir-format msgid "Your Tesla account is locked due to too many failed sign in attempts. To unlock your account, reset your password" msgstr "" @@ -654,3 +654,8 @@ msgstr "" #, elixir-autogen, elixir-format msgid "Expected Finish Time" msgstr "" + +#: lib/teslamate_web/live/signin_live/index.html.heex:59 +#, elixir-autogen, elixir-format, fuzzy +msgid "You are using the API key (%{token}) provided by %{url}. It will allow your TeslaMate to access the official Tesla Fleet API and Tesla Telemetry streaming." +msgstr "" diff --git a/priv/gettext/sv/LC_MESSAGES/default.po b/priv/gettext/sv/LC_MESSAGES/default.po index fafc5aba..bb32a7a9 100644 --- a/priv/gettext/sv/LC_MESSAGES/default.po +++ b/priv/gettext/sv/LC_MESSAGES/default.po @@ -178,7 +178,7 @@ msgstr "Spara" #: lib/teslamate_web/live/charge_live/cost.html.heex:169 #: lib/teslamate_web/live/geofence_live/form.html.heex:130 -#: lib/teslamate_web/live/signin_live/index.html.heex:60 +#: lib/teslamate_web/live/signin_live/index.html.heex:84 #, elixir-autogen, elixir-format msgid "Saving..." msgstr "Sparar..." @@ -194,7 +194,7 @@ msgstr "Tid för försök att gå ner i vila" msgid "min" msgstr "" -#: lib/teslamate_web/live/signin_live/index.ex:81 +#: lib/teslamate_web/live/signin_live/index.ex:83 #, elixir-autogen, elixir-format msgid "Signed in successfully" msgstr "Inloggad" @@ -460,7 +460,7 @@ msgid "Time zone" msgstr "Tidszon" #: lib/teslamate_web/live/signin_live/index.ex:13 -#: lib/teslamate_web/live/signin_live/index.html.heex:51 +#: lib/teslamate_web/live/signin_live/index.html.heex:70 #, elixir-autogen, elixir-format msgid "Sign in" msgstr "Logga in" @@ -575,32 +575,32 @@ msgstr "Mjukvaruuppdatering tillgänglig (%{version})" msgid "Sign out" msgstr "Logga ut" -#: lib/teslamate_web/live/signin_live/index.html.heex:18 +#: lib/teslamate_web/live/signin_live/index.html.heex:19 #, elixir-autogen, elixir-format msgid "Access Token" msgstr "Åtkomsttoken" -#: lib/teslamate_web/live/signin_live/index.html.heex:34 +#: lib/teslamate_web/live/signin_live/index.html.heex:35 #, elixir-autogen, elixir-format msgid "Refresh Token" msgstr "Uppdatera token" -#: lib/teslamate_web/live/signin_live/index.ex:56 +#: lib/teslamate_web/live/signin_live/index.ex:58 #, elixir-autogen, elixir-format msgid "Tokens are invalid" msgstr "Tokens är ogiltiga" -#: lib/teslamate_web/live/signin_live/index.html.heex:74 +#: lib/teslamate_web/live/signin_live/index.html.heex:99 #, elixir-autogen, elixir-format msgid "Obtaining tokens through the Tesla API requires programming experience or a 3rd-party service. Information can be found %{here}." msgstr "För att få tokens via Tesla API krävs programmeringserfarenhet eller en tredjeparts tjänst. Information finns %{here}." -#: lib/teslamate_web/live/signin_live/index.html.heex:67 +#: lib/teslamate_web/live/signin_live/index.html.heex:92 #, elixir-autogen, elixir-format msgid "here" msgstr "här" -#: lib/teslamate_web/live/signin_live/index.ex:59 +#: lib/teslamate_web/live/signin_live/index.ex:61 #, elixir-autogen, elixir-format msgid "Your Tesla account is locked due to too many failed sign in attempts. To unlock your account, reset your password" msgstr "Ditt Tesla-konto är låst på grund av för många misslyckade inloggningsförsök. Återställ ditt lösenord för att låsa upp ditt konto" @@ -654,3 +654,8 @@ msgstr "Hundläge är aktiverad" #, elixir-autogen, elixir-format msgid "Expected Finish Time" msgstr "Förväntad sluttid" + +#: lib/teslamate_web/live/signin_live/index.html.heex:59 +#, elixir-autogen, elixir-format, fuzzy +msgid "You are using the API key (%{token}) provided by %{url}. It will allow your TeslaMate to access the official Tesla Fleet API and Tesla Telemetry streaming." +msgstr "" diff --git a/priv/gettext/th/LC_MESSAGES/default.po b/priv/gettext/th/LC_MESSAGES/default.po index 09ad2592..e0f2c387 100644 --- a/priv/gettext/th/LC_MESSAGES/default.po +++ b/priv/gettext/th/LC_MESSAGES/default.po @@ -178,7 +178,7 @@ msgstr "บันทึก" #: lib/teslamate_web/live/charge_live/cost.html.heex:169 #: lib/teslamate_web/live/geofence_live/form.html.heex:130 -#: lib/teslamate_web/live/signin_live/index.html.heex:60 +#: lib/teslamate_web/live/signin_live/index.html.heex:84 #, elixir-autogen, elixir-format msgid "Saving..." msgstr "กำลังบันทึก..." @@ -194,7 +194,7 @@ msgstr "จำนวนครั้งที่รถพยายามเข้ msgid "min" msgstr "นาที" -#: lib/teslamate_web/live/signin_live/index.ex:81 +#: lib/teslamate_web/live/signin_live/index.ex:83 #, elixir-autogen, elixir-format msgid "Signed in successfully" msgstr "ลงชื่อเข้าใช้เรียบร้อย" @@ -459,7 +459,7 @@ msgid "Time zone" msgstr "เขตเวลา" #: lib/teslamate_web/live/signin_live/index.ex:13 -#: lib/teslamate_web/live/signin_live/index.html.heex:51 +#: lib/teslamate_web/live/signin_live/index.html.heex:70 #, elixir-autogen, elixir-format msgid "Sign in" msgstr "เข้าสู่ระบบ" @@ -574,32 +574,32 @@ msgstr "มีการอัปเดตซอฟต์แวร์ (%{version} msgid "Sign out" msgstr "ออกจากระบบ" -#: lib/teslamate_web/live/signin_live/index.html.heex:18 +#: lib/teslamate_web/live/signin_live/index.html.heex:19 #, elixir-autogen, elixir-format msgid "Access Token" msgstr "โทเค็นการเข้าถึง" -#: lib/teslamate_web/live/signin_live/index.html.heex:34 +#: lib/teslamate_web/live/signin_live/index.html.heex:35 #, elixir-autogen, elixir-format msgid "Refresh Token" msgstr "รีเฟรชโทเค็น" -#: lib/teslamate_web/live/signin_live/index.ex:56 +#: lib/teslamate_web/live/signin_live/index.ex:58 #, elixir-autogen, elixir-format msgid "Tokens are invalid" msgstr "โทเค็นไม่ถูกต้อง" -#: lib/teslamate_web/live/signin_live/index.html.heex:74 +#: lib/teslamate_web/live/signin_live/index.html.heex:99 #, elixir-autogen, elixir-format msgid "Obtaining tokens through the Tesla API requires programming experience or a 3rd-party service. Information can be found %{here}." msgstr "การได้รับโทเค็นผ่าน Tesla API ต้องใช้ประสบการณ์การเขียนโปรแกรมหรือบริการของบุคคลที่สาม ข้อมูลสามารถพบได้ที่ %{here}" -#: lib/teslamate_web/live/signin_live/index.html.heex:67 +#: lib/teslamate_web/live/signin_live/index.html.heex:92 #, elixir-autogen, elixir-format msgid "here" msgstr "ที่นี่" -#: lib/teslamate_web/live/signin_live/index.ex:59 +#: lib/teslamate_web/live/signin_live/index.ex:61 #, elixir-autogen, elixir-format msgid "Your Tesla account is locked due to too many failed sign in attempts. To unlock your account, reset your password" msgstr "บัญชี Tesla ของคุณถูกล็อคเนื่องจากการพยายามลงชื่อเข้าใช้ที่ล้มเหลวหลายครั้งเกินไป หากต้องการปลดล็อคบัญชีของคุณ ให้รีเซ็ตรหัสผ่านของคุณ" @@ -653,3 +653,8 @@ msgstr "" #, elixir-autogen, elixir-format msgid "Expected Finish Time" msgstr "" + +#: lib/teslamate_web/live/signin_live/index.html.heex:59 +#, elixir-autogen, elixir-format, fuzzy +msgid "You are using the API key (%{token}) provided by %{url}. It will allow your TeslaMate to access the official Tesla Fleet API and Tesla Telemetry streaming." +msgstr "" diff --git a/priv/gettext/tr/LC_MESSAGES/default.po b/priv/gettext/tr/LC_MESSAGES/default.po index 8f08a0fe..046ccea7 100644 --- a/priv/gettext/tr/LC_MESSAGES/default.po +++ b/priv/gettext/tr/LC_MESSAGES/default.po @@ -178,7 +178,7 @@ msgstr "Kaydet" #: lib/teslamate_web/live/charge_live/cost.html.heex:169 #: lib/teslamate_web/live/geofence_live/form.html.heex:130 -#: lib/teslamate_web/live/signin_live/index.html.heex:60 +#: lib/teslamate_web/live/signin_live/index.html.heex:84 #, elixir-autogen, elixir-format msgid "Saving..." msgstr "Kaydediliyor..." @@ -194,7 +194,7 @@ msgstr "Uykuya Dalmayı Deneme Zamanı" msgid "min" msgstr "min" -#: lib/teslamate_web/live/signin_live/index.ex:81 +#: lib/teslamate_web/live/signin_live/index.ex:83 #, elixir-autogen, elixir-format msgid "Signed in successfully" msgstr "Oturum başarıyla açıldı" @@ -460,7 +460,7 @@ msgid "Time zone" msgstr "Saat dilimi" #: lib/teslamate_web/live/signin_live/index.ex:13 -#: lib/teslamate_web/live/signin_live/index.html.heex:51 +#: lib/teslamate_web/live/signin_live/index.html.heex:70 #, elixir-autogen, elixir-format msgid "Sign in" msgstr "Oturum aç" @@ -575,32 +575,32 @@ msgstr "Yazılım Güncellemesi mevcut (%{version})" msgid "Sign out" msgstr "" -#: lib/teslamate_web/live/signin_live/index.html.heex:18 +#: lib/teslamate_web/live/signin_live/index.html.heex:19 #, elixir-autogen, elixir-format msgid "Access Token" msgstr "" -#: lib/teslamate_web/live/signin_live/index.html.heex:34 +#: lib/teslamate_web/live/signin_live/index.html.heex:35 #, elixir-autogen, elixir-format msgid "Refresh Token" msgstr "" -#: lib/teslamate_web/live/signin_live/index.ex:56 +#: lib/teslamate_web/live/signin_live/index.ex:58 #, elixir-autogen, elixir-format msgid "Tokens are invalid" msgstr "" -#: lib/teslamate_web/live/signin_live/index.html.heex:74 +#: lib/teslamate_web/live/signin_live/index.html.heex:99 #, elixir-autogen, elixir-format msgid "Obtaining tokens through the Tesla API requires programming experience or a 3rd-party service. Information can be found %{here}." msgstr "" -#: lib/teslamate_web/live/signin_live/index.html.heex:67 +#: lib/teslamate_web/live/signin_live/index.html.heex:92 #, elixir-autogen, elixir-format msgid "here" msgstr "" -#: lib/teslamate_web/live/signin_live/index.ex:59 +#: lib/teslamate_web/live/signin_live/index.ex:61 #, elixir-autogen, elixir-format msgid "Your Tesla account is locked due to too many failed sign in attempts. To unlock your account, reset your password" msgstr "" @@ -654,3 +654,8 @@ msgstr "" #, elixir-autogen, elixir-format msgid "Expected Finish Time" msgstr "" + +#: lib/teslamate_web/live/signin_live/index.html.heex:59 +#, elixir-autogen, elixir-format, fuzzy +msgid "You are using the API key (%{token}) provided by %{url}. It will allow your TeslaMate to access the official Tesla Fleet API and Tesla Telemetry streaming." +msgstr "" diff --git a/priv/gettext/uk/LC_MESSAGES/default.po b/priv/gettext/uk/LC_MESSAGES/default.po index ee6d4b42..14787bb6 100644 --- a/priv/gettext/uk/LC_MESSAGES/default.po +++ b/priv/gettext/uk/LC_MESSAGES/default.po @@ -178,7 +178,7 @@ msgstr "Зберегти" #: lib/teslamate_web/live/charge_live/cost.html.heex:169 #: lib/teslamate_web/live/geofence_live/form.html.heex:130 -#: lib/teslamate_web/live/signin_live/index.html.heex:60 +#: lib/teslamate_web/live/signin_live/index.html.heex:84 #, elixir-autogen, elixir-format msgid "Saving..." msgstr "Зберігаю..." @@ -194,7 +194,7 @@ msgstr "Час до спроби заснути" msgid "min" msgstr "мінімум" -#: lib/teslamate_web/live/signin_live/index.ex:81 +#: lib/teslamate_web/live/signin_live/index.ex:83 #, elixir-autogen, elixir-format msgid "Signed in successfully" msgstr "Вхід успішний" @@ -461,7 +461,7 @@ msgid "Time zone" msgstr "Часовий пояс" #: lib/teslamate_web/live/signin_live/index.ex:13 -#: lib/teslamate_web/live/signin_live/index.html.heex:51 +#: lib/teslamate_web/live/signin_live/index.html.heex:70 #, elixir-autogen, elixir-format msgid "Sign in" msgstr "Увійти" @@ -577,32 +577,32 @@ msgstr "Доступне оновлення ПЗ (%{version})" msgid "Sign out" msgstr "Вийти" -#: lib/teslamate_web/live/signin_live/index.html.heex:18 +#: lib/teslamate_web/live/signin_live/index.html.heex:19 #, elixir-autogen, elixir-format msgid "Access Token" msgstr "" -#: lib/teslamate_web/live/signin_live/index.html.heex:34 +#: lib/teslamate_web/live/signin_live/index.html.heex:35 #, elixir-autogen, elixir-format msgid "Refresh Token" msgstr "" -#: lib/teslamate_web/live/signin_live/index.ex:56 +#: lib/teslamate_web/live/signin_live/index.ex:58 #, elixir-autogen, elixir-format msgid "Tokens are invalid" msgstr "Токени не дійсні" -#: lib/teslamate_web/live/signin_live/index.html.heex:74 +#: lib/teslamate_web/live/signin_live/index.html.heex:99 #, elixir-autogen, elixir-format msgid "Obtaining tokens through the Tesla API requires programming experience or a 3rd-party service. Information can be found %{here}." msgstr "Для отримання токенів через API Tesla вимагає навичок програмування або доступ до інших сервісів. Інформацію можна знайти %{here}." -#: lib/teslamate_web/live/signin_live/index.html.heex:67 +#: lib/teslamate_web/live/signin_live/index.html.heex:92 #, elixir-autogen, elixir-format msgid "here" msgstr "тут" -#: lib/teslamate_web/live/signin_live/index.ex:59 +#: lib/teslamate_web/live/signin_live/index.ex:61 #, elixir-autogen, elixir-format msgid "Your Tesla account is locked due to too many failed sign in attempts. To unlock your account, reset your password" msgstr "Ваш аккаунт Тесла заблоковано через дуже велику кількість невдалих спроб входу. Щоб розблокувати свій аккаунт, відновіть свій пароль" @@ -656,3 +656,8 @@ msgstr "" #, elixir-autogen, elixir-format msgid "Expected Finish Time" msgstr "" + +#: lib/teslamate_web/live/signin_live/index.html.heex:59 +#, elixir-autogen, elixir-format, fuzzy +msgid "You are using the API key (%{token}) provided by %{url}. It will allow your TeslaMate to access the official Tesla Fleet API and Tesla Telemetry streaming." +msgstr "" diff --git a/priv/gettext/zh_Hans/LC_MESSAGES/default.po b/priv/gettext/zh_Hans/LC_MESSAGES/default.po index ee67c8ee..f1f38692 100644 --- a/priv/gettext/zh_Hans/LC_MESSAGES/default.po +++ b/priv/gettext/zh_Hans/LC_MESSAGES/default.po @@ -179,7 +179,7 @@ msgstr "保存" #: lib/teslamate_web/live/charge_live/cost.html.heex:169 #: lib/teslamate_web/live/geofence_live/form.html.heex:130 -#: lib/teslamate_web/live/signin_live/index.html.heex:60 +#: lib/teslamate_web/live/signin_live/index.html.heex:84 #, elixir-autogen, elixir-format msgid "Saving..." msgstr "保存中" @@ -195,7 +195,7 @@ msgstr "尝试进入睡眠用时" msgid "min" msgstr "分钟" -#: lib/teslamate_web/live/signin_live/index.ex:81 +#: lib/teslamate_web/live/signin_live/index.ex:83 #, elixir-autogen, elixir-format msgid "Signed in successfully" msgstr "登录成功" @@ -461,7 +461,7 @@ msgid "Time zone" msgstr "时区" #: lib/teslamate_web/live/signin_live/index.ex:13 -#: lib/teslamate_web/live/signin_live/index.html.heex:51 +#: lib/teslamate_web/live/signin_live/index.html.heex:70 #, elixir-autogen, elixir-format msgid "Sign in" msgstr "登录" @@ -576,32 +576,32 @@ msgstr "有可用更新 (%{version})" msgid "Sign out" msgstr "退出登录" -#: lib/teslamate_web/live/signin_live/index.html.heex:18 +#: lib/teslamate_web/live/signin_live/index.html.heex:19 #, elixir-autogen, elixir-format msgid "Access Token" msgstr "令牌" -#: lib/teslamate_web/live/signin_live/index.html.heex:34 +#: lib/teslamate_web/live/signin_live/index.html.heex:35 #, elixir-autogen, elixir-format msgid "Refresh Token" msgstr "刷新令牌" -#: lib/teslamate_web/live/signin_live/index.ex:56 +#: lib/teslamate_web/live/signin_live/index.ex:58 #, elixir-autogen, elixir-format msgid "Tokens are invalid" msgstr "令牌 无效" -#: lib/teslamate_web/live/signin_live/index.html.heex:74 +#: lib/teslamate_web/live/signin_live/index.html.heex:99 #, elixir-autogen, elixir-format msgid "Obtaining tokens through the Tesla API requires programming experience or a 3rd-party service. Information can be found %{here}." msgstr "通过 Tesla API 获得令牌需要有编程经验或者借助第三方服务。更多信息可以查看 %{here}。" -#: lib/teslamate_web/live/signin_live/index.html.heex:67 +#: lib/teslamate_web/live/signin_live/index.html.heex:92 #, elixir-autogen, elixir-format msgid "here" msgstr "这里" -#: lib/teslamate_web/live/signin_live/index.ex:59 +#: lib/teslamate_web/live/signin_live/index.ex:61 #, elixir-autogen, elixir-format msgid "Your Tesla account is locked due to too many failed sign in attempts. To unlock your account, reset your password" msgstr "您的 Tesla 帐户因登录尝试失败次数过多而被锁定。要解锁您的帐户,请重置您的密码" @@ -655,3 +655,8 @@ msgstr "爱犬模式已激活" #, elixir-autogen, elixir-format msgid "Expected Finish Time" msgstr "预计完成时间" + +#: lib/teslamate_web/live/signin_live/index.html.heex:59 +#, elixir-autogen, elixir-format, fuzzy +msgid "You are using the API key (%{token}) provided by %{url}. It will allow your TeslaMate to access the official Tesla Fleet API and Tesla Telemetry streaming." +msgstr "" diff --git a/priv/gettext/zh_Hant/LC_MESSAGES/default.po b/priv/gettext/zh_Hant/LC_MESSAGES/default.po index d34a0fa7..13a9bbf9 100644 --- a/priv/gettext/zh_Hant/LC_MESSAGES/default.po +++ b/priv/gettext/zh_Hant/LC_MESSAGES/default.po @@ -178,7 +178,7 @@ msgstr "保存" #: lib/teslamate_web/live/charge_live/cost.html.heex:169 #: lib/teslamate_web/live/geofence_live/form.html.heex:130 -#: lib/teslamate_web/live/signin_live/index.html.heex:60 +#: lib/teslamate_web/live/signin_live/index.html.heex:84 #, elixir-autogen, elixir-format msgid "Saving..." msgstr "儲存中" @@ -194,7 +194,7 @@ msgstr "嘗試進入睡眠" msgid "min" msgstr "分鐘" -#: lib/teslamate_web/live/signin_live/index.ex:81 +#: lib/teslamate_web/live/signin_live/index.ex:83 #, elixir-autogen, elixir-format msgid "Signed in successfully" msgstr "登入成功" @@ -459,7 +459,7 @@ msgid "Time zone" msgstr "時區" #: lib/teslamate_web/live/signin_live/index.ex:13 -#: lib/teslamate_web/live/signin_live/index.html.heex:51 +#: lib/teslamate_web/live/signin_live/index.html.heex:70 #, elixir-autogen, elixir-format msgid "Sign in" msgstr "登入" @@ -573,32 +573,32 @@ msgstr "有可用更新 (%{version})" msgid "Sign out" msgstr "登出" -#: lib/teslamate_web/live/signin_live/index.html.heex:18 +#: lib/teslamate_web/live/signin_live/index.html.heex:19 #, elixir-autogen, elixir-format msgid "Access Token" msgstr "" -#: lib/teslamate_web/live/signin_live/index.html.heex:34 +#: lib/teslamate_web/live/signin_live/index.html.heex:35 #, elixir-autogen, elixir-format msgid "Refresh Token" msgstr "更新Token" -#: lib/teslamate_web/live/signin_live/index.ex:56 +#: lib/teslamate_web/live/signin_live/index.ex:58 #, elixir-autogen, elixir-format msgid "Tokens are invalid" msgstr "Tokens無效" -#: lib/teslamate_web/live/signin_live/index.html.heex:74 +#: lib/teslamate_web/live/signin_live/index.html.heex:99 #, elixir-autogen, elixir-format msgid "Obtaining tokens through the Tesla API requires programming experience or a 3rd-party service. Information can be found %{here}." msgstr "勾過 Tesla API 獲得Token需要有程式編寫經驗或者藉由第三方服務。更多資訊詳見 %{here}。" -#: lib/teslamate_web/live/signin_live/index.html.heex:67 +#: lib/teslamate_web/live/signin_live/index.html.heex:92 #, elixir-autogen, elixir-format msgid "here" msgstr "這裡" -#: lib/teslamate_web/live/signin_live/index.ex:59 +#: lib/teslamate_web/live/signin_live/index.ex:61 #, elixir-autogen, elixir-format msgid "Your Tesla account is locked due to too many failed sign in attempts. To unlock your account, reset your password" msgstr "您的 Tesla 帳號因登入失敗次數過多而被鎖定。要解鎖您的帳戶,請重置您的密碼" @@ -652,3 +652,8 @@ msgstr "寵物模式開啓" #, elixir-autogen, elixir-format msgid "Expected Finish Time" msgstr "預計充電完成時間" + +#: lib/teslamate_web/live/signin_live/index.html.heex:59 +#, elixir-autogen, elixir-format, fuzzy +msgid "You are using the API key (%{token}) provided by %{url}. It will allow your TeslaMate to access the official Tesla Fleet API and Tesla Telemetry streaming." +msgstr "" diff --git a/website/docs/configuration/environment_variables.md b/website/docs/configuration/environment_variables.md index d1504f66..31409337 100644 --- a/website/docs/configuration/environment_variables.md +++ b/website/docs/configuration/environment_variables.md @@ -6,34 +6,41 @@ sidebar_label: Environment Variables TeslaMate accepts the following environment variables for runtime configuration: -| Variable Name | Description | Default Value | -| --------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------- | -| **ENCRYPTION_KEY** | A key used to encrypt the Tesla API tokens (**required**) | | -| **DATABASE_USER** | Username (**required**) | | -| **DATABASE_PASS** | User password (**required**) | | -| **DATABASE_NAME** | The database to connect to (**required**) | | -| **DATABASE_HOST** | Hostname of the database server (**required**) | | -| **DATABASE_PORT** | Port of the database server | 5432 | -| **DATABASE_POOL_SIZE** | Size of the database connection pool | 10 | -| **DATABASE_TIMEOUT** | The time in milliseconds to wait for database query calls to finish | 60000 | -| **DATABASE_SSL** | Set to `true` if SSL should be enabled or `noverify` if certificate verification should not be performed. | false | -| **DATABASE_SSL_CA_CERT_FILE** | Path to a file containing PEM-encoded CA certificates (required if `DATABASE_SSL` is set to `true`) | | -| **DATABASE_SSL_SNI** | set SNI for host undel ssl mode | | -| **DATABASE_IPV6** | Set to `true` if IPv6 should be used | false | -| **VIRTUAL_HOST** | Host part used for generating URLs throughout the app | localhost | -| **URL_PATH** | Path used for generating URLs (can be used with a reverse proxy) | / | -| **CHECK_ORIGIN** | Configures whether to check the origin header or not. May be `true` (**recommended**), `false` (_default_) or a comma-separated list of hosts that are allowed (e.g. `https://example.com,//another.com:8080`). Hosts also support wildcards. If `true`, it will check against the host value in `VIRTUAL_HOST`. | false | -| **PORT** | Port where the web interface is exposed | 4000 | -| **HTTP_BINDING_ADDRESS** | IP address where the web interface is exposed, or blank (_default_) meaning all addresses. | | -| **DISABLE_MQTT** | Disables the MQTT feature if `true` | false | -| **MQTT_HOST** | Hostname of the broker (**required** unless DISABLE_MQTT is `true`) | | -| **MQTT_PORT** | Port of the broker | 1883 (8883 for MQTT over TLS) | -| **MQTT_USERNAME** | Username | | -| **MQTT_PASSWORD** | Password | | -| **MQTT_TLS** | Enables TLS if `true` | false | -| **MQTT_TLS_ACCEPT_INVALID_CERTS** | Accepts invalid certificates if `true` | false | -| **MQTT_IPV6** | Set to `true` if IPv6 should be used | false | -| **MQTT_NAMESPACE** | Inserts a custom namespace into the MQTT topic . For example, with `MQTT_NAMESPACE=account_0`: `teslamate/account_0/cars/$car_id/state`. | | -| **IMPORT_DIR** | The path of the directory for the import of data (e.g. TeslaFi) | ./import | -| **TZ** | Used to establish the local time zone, e.g. to use the local time in logs. See [List of tz database time zones](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones). | | -| **DEFAULT_GEOFENCE** | The default GEOFENCE to send via GEOFENCE if car not in geofence. Overrides the default of "" which will delete any retained value. | "" (no quotes) | +| Variable Name | Description | Default Value | +| -------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------- | +| **ENCRYPTION_KEY** | A key used to encrypt the Tesla API tokens (**required**) | | +| **DATABASE_USER** | Username (**required**) | | +| **DATABASE_PASS** | User password (**required**) | | +| **DATABASE_NAME** | The database to connect to (**required**) | | +| **DATABASE_HOST** | Hostname of the database server (**required**) | | +| **DATABASE_PORT** | Port of the database server | 5432 | +| **DATABASE_POOL_SIZE** | Size of the database connection pool | 10 | +| **DATABASE_TIMEOUT** | The time in milliseconds to wait for database query calls to finish | 60000 | +| **DATABASE_SSL** | Set to `true` if SSL should be enabled or `noverify` if certificate verification should not be performed. | false | +| **DATABASE_SSL_CA_CERT_FILE** | Path to a file containing PEM-encoded CA certificates (required if `DATABASE_SSL` is set to `true`) | | +| **DATABASE_SSL_SNI** | set SNI for host undel ssl mode | | +| **DATABASE_IPV6** | Set to `true` if IPv6 should be used | false | +| **VIRTUAL_HOST** | Host part used for generating URLs throughout the app | localhost | +| **URL_PATH** | Path used for generating URLs (can be used with a reverse proxy) | / | +| **CHECK_ORIGIN** | Configures whether to check the origin header or not. May be `true` (**recommended**), `false` (_default_) or a comma-separated list of hosts that are allowed (e.g. `https://example.com,//another.com:8080`). Hosts also support wildcards. If `true`, it will check against the host value in `VIRTUAL_HOST`. | false | +| **PORT** | Port where the web interface is exposed | 4000 | +| **HTTP_BINDING_ADDRESS** | IP address where the web interface is exposed, or blank (_default_) meaning all addresses. | | +| **DISABLE_MQTT** | Disables the MQTT feature if `true` | false | +| **MQTT_HOST** | Hostname of the broker (**required** unless DISABLE_MQTT is `true`) | | +| **MQTT_PORT** | Port of the broker | 1883 (8883 for MQTT over TLS) | +| **MQTT_USERNAME** | Username | | +| **MQTT_PASSWORD** | Password | | +| **MQTT_TLS** | Enables TLS if `true` | false | +| **MQTT_TLS_ACCEPT_INVALID_CERTS** | Accepts invalid certificates if `true` | false | +| **MQTT_IPV6** | Set to `true` if IPv6 should be used | false | +| **MQTT_NAMESPACE** | Inserts a custom namespace into the MQTT topic . For example, with `MQTT_NAMESPACE=account_0`: `teslamate/account_0/cars/$car_id/state`. | | +| **IMPORT_DIR** | The path of the directory for the import of data (e.g. TeslaFi) | ./import | +| **TZ** | Used to establish the local time zone, e.g. to use the local time in logs. See [List of tz database time zones](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones). | | +| **DEFAULT_GEOFENCE** | The default GEOFENCE to send via GEOFENCE if car not in geofence. Overrides the default of "" which will delete any retained value. | "" (no quotes) | +| **TESLA_API_HOST** | Hostname of the Tesla API | https://owner-api.teslamotors.com (or for chinese: https://owner-api.vn.cloud.tesla.cn) | +| **TESLA_AUTH_HOST** | Hostname of the Tesla authentication API | https://auth.tesla.com | +| **TESLA_AUTH_PATH** | The Tesla authentication path | /oauth2/v3 | +| **TESLA_WSS_HOST** | Hostname of the Tesla streaming | wss://streaming.vn.teslamotors.com (or for chinese: wss://streaming.vn.cloud.tesla.cn) | +| **TESLA_WSS_TLS_ACCEPT_INVALID_CERTS** | Accepts invalid certificates on TESLA_WSS_HOST if `true` | | +| **TESLA_WSS_USE_VIN** | Use the `vin` field instead of `vid` to connect stream if `true` | | +| **TOKEN** | Token given by a third party Tesla API provider. This `TOKEN` is added to each API request and the format must be `?token=xxxx-xxxx-xxxx` | |