Fix deepl detect source language

This commit is contained in:
Simon Prévost 2024-03-28 21:31:01 -04:00
parent e141a3ba55
commit 09338293a6
6 changed files with 60 additions and 21 deletions

View File

@ -46,7 +46,7 @@ defmodule Accent.MachineTranslations.Provider.Deepl do
def translate(provider, contents, source, target) do def translate(provider, contents, source, target) do
with {:ok, {source, target}} <- with {:ok, {source, target}} <-
Accent.MachineTranslations.map_source_and_target(source, target, @supported_languages), Accent.MachineTranslations.map_source_and_target(source, target, @supported_languages),
params = %{text: contents, source_lang: String.upcase(source), target_lang: String.upcase(target)}, params = %{text: contents, source_lang: source && String.upcase(source), target_lang: String.upcase(target)},
{:ok, %{body: %{"translations" => translations}}} <- {:ok, %{body: %{"translations" => translations}}} <-
Tesla.post(client(provider.config["key"]), "translate", params) do Tesla.post(client(provider.config["key"]), "translate", params) do
{:ok, Enum.map(translations, &%TranslatedText{text: &1["text"]})} {:ok, Enum.map(translations, &%TranslatedText{text: &1["text"]})}

View File

@ -73,5 +73,52 @@ defmodule AccentTest.MachineTranslations do
{:error, error} = MachineTranslations.translate(entries, source_language, target_language, config) {:error, error} = MachineTranslations.translate(entries, source_language, target_language, config)
assert error === "Something" assert error === "Something"
end end
test "deepl" do
mock_global(fn
%{body: body, url: "https://api-free.deepl.com/v2/translate"} ->
assert Jason.decode!(body) === %{"source_lang" => "FR", "target_lang" => "EN", "text" => ["Test"]}
%Tesla.Env{status: 200, body: %{"translations" => [%{"text" => "Translated"}]}}
end)
entries = [%Langue.Entry{value: "Test", value_type: "string", key: "."}]
source_language = "fr"
target_language = "en"
provider_config = %{"key" => "test"}
config = %{"provider" => "deepl", "config" => provider_config}
[entry] = MachineTranslations.translate(entries, source_language, target_language, config)
assert entry.value === "Translated"
end
test "deepl error" do
mock_global(fn %{url: "https://api-free.deepl.com/v2/translate"} ->
%Tesla.Env{status: 400, body: "Something"}
end)
entries = [%Langue.Entry{value: "Test", value_type: "string", key: "."}]
source_language = "fr"
target_language = "en"
provider_config = %{"key" => "test"}
config = %{"provider" => "deepl", "config" => provider_config}
{:error, error} = MachineTranslations.translate(entries, source_language, target_language, config)
assert error === "Something"
end
test "deepl detect source" do
mock_global(fn %{url: "https://api-free.deepl.com/v2/translate"} ->
%Tesla.Env{status: 400, body: "Something"}
end)
entries = [%Langue.Entry{value: "Test", value_type: "string", key: "."}]
target_language = "en"
provider_config = %{"key" => "test"}
config = %{"provider" => "deepl", "config" => provider_config}
{:error, error} = MachineTranslations.translate(entries, nil, target_language, config)
assert error === "Something"
end
end end
end end

View File

@ -43,11 +43,10 @@
position: relative; position: relative;
gap: 10px; gap: 10px;
left: 1px; left: 1px;
padding: 5px 12px 4px; padding: 7px 12px 6px;
text-decoration: none; text-decoration: none;
font-size: 13px; font-size: 13px;
border-radius: var(--border-radius); border-radius: var(--border-radius);
margin-bottom: 3px;
color: var(--text-color-normal); color: var(--text-color-normal);
&:hover, &:hover,

View File

@ -1,6 +1,6 @@
.wrapper { .wrapper {
display: flex; display: flex;
margin-top: 30px; margin-top: 10px;
& > div:first-of-type { & > div:first-of-type {
margin-right: 40px; margin-right: 40px;

View File

@ -1,19 +1,15 @@
.navigation--alt { .navigation--alt {
border-bottom: 1px solid var(--input-border-color);
.navigation-list-item { .navigation-list-item {
margin-right: 6px; margin-right: 6px;
} }
.navigation-list-item-link { .navigation-list-item-link {
position: relative; padding: 2px 11px 2px 10px;
top: 1px; border-radius: var(--border-radius);
padding: 10px 15px 8px 10px;
border-bottom: 2px solid transparent;
&:global(.active) { &:global(.active) {
border-bottom-color: var(--color-primary); background: var(--background-light-highlight);
color: var(--color-primary); opacity: 0.7;
} }
} }
} }
@ -21,7 +17,6 @@
.navigation-list { .navigation-list {
display: flex; display: flex;
align-items: stretch; align-items: stretch;
min-height: 40px;
position: relative; position: relative;
left: -6px; left: -6px;
z-index: 10; z-index: 10;
@ -45,21 +40,19 @@
position: relative; position: relative;
padding: 5px 5px 6px 3px; padding: 5px 5px 6px 3px;
text-decoration: none; text-decoration: none;
font-size: 14px; font-size: 13px;
font-weight: 600; font-weight: 600;
color: var(--color-black); color: var(--color-black);
&:focus, &:focus,
&:hover, &:hover,
:global(&.active) { :global(&.active) {
color: var(--color-primary);
.navigation-list-item-link-text { .navigation-list-item-link-text {
opacity: 1; opacity: 1;
} }
.navigation-list-item-link-icon { .navigation-list-item-link-icon {
stroke: var(--color-primary); stroke: currentColor;
} }
} }
} }
@ -73,9 +66,9 @@
.navigation-list-item-link-icon { .navigation-list-item-link-icon {
transition: 0.2s ease-in-out; transition: 0.2s ease-in-out;
transition-property: stroke; transition-property: stroke;
width: 16px; width: 12px;
height: 16px; height: 12px;
margin-right: 7px; margin-right: 5px;
opacity: 0.6; opacity: 0.6;
stroke: var(--color-black); stroke: var(--color-black);
} }

View File

@ -66,7 +66,7 @@
@onUpdateText={{fn this.onUpdateText}} @onUpdateText={{fn this.onUpdateText}}
/> />
</div> </div>
<AsyncButton @onClick={{fn this.save}} @loading={{this.isSaving}} class='button button--filled button--iconOnly'> <AsyncButton @onClick={{fn this.save}} @loading={{this.isSaving}} class='button button--filled'>
{{t 'components.related_translations_list.save_button'}} {{t 'components.related_translations_list.save_button'}}
</AsyncButton> </AsyncButton>
{{/unless}} {{/unless}}