Aws::Translate::Client - translate_text Returns Random Do-Not-Translate IDs or Skips Translations Depending on < and > Character Usage
メンテナーはふだん 1 日以内に返信
まだ誰も着手していません。
評価
調査の方向性
リポジトリのファイルもテストも特定されていません。aws-sdk-translate 1.79.0 を使って2つの Ruby の再現を再実行し、クライアントのリクエストと AWS Translate のレスポンスを比較して、欠陥がサービス側にあるのかクライアント側にあるのかを明らかにします。完了とは、担当箇所が確認され、DNT IDs とスキップされたテキストの挙動が解決または文書化されていることを意味します。
索引モデルが issue の本文から書いたものです。
説明
Describe the bug
Sorry if this is the wrong place to report this since this is an issue with the API and not the Ruby client, but I noticed this when testing out the do-not-translate syntax and I have examples in Ruby to illustrate the problems. There are 2 issues which are probably related.
A. Internal IDs Are Returned
# Good. Skips translating the text.
Aws::Translate::Client.new.translate_text(text: '<span translate="no">Skip me</span>', source_language_code: 'en', target_language_code: 'fr').translated_text
=> "<span translate=\"no\">Skip me</span>"
# Good. Extra ">" on the right side doesn't cause problems.
Aws::Translate::Client.new.translate_text(text: '<span translate="no">Skip me</span>>', source_language_code: 'en', target_language_code: 'fr').translated_text
=> "<span translate=\"no\">Skip me</span> >"
# Bad. Extra "<" on the left side returns gibberish.
Aws::Translate::Client.new.translate_text(text: '<<span translate="no">Skip me</span>', source_language_code: 'en', target_language_code: 'fr').translated_text
=> "<DNT_GEBKJMMFHEHCKOAJBKHKJHCAkDHDNDDD"
This appears to be returning a unique random ID for some kind of "Do-Not-Translate" element because the response always starts with "DNT_" or "dnt_", followed by 32 random characters.
This isn't a huge issue because the example is contrived and the input isn't valid HTML, but there may be a problem somewhere down in the do-not-translate parsing which reveals internal values.
B. Text Between Greater Than and Less Than Characters Can Remain Untranslated
Probably as a result of how the do-not-translate parsing works, there's also a different issue where text between < and > characters sometimes isn't translated depending on other punctuation involved. I'm not sure how to avoid this because even when using < and > to escape the characters some text may remain untranslated.
# Good. Translates everything when there's a "." between the "<" and ">"
text = "If expenses < revenue then we have a profit. But if expenses > revenue then we have a loss."
Aws::Translate::Client.new.translate_text(text: text, source_language_code: 'en', target_language_code: 'fr').translated_text
=> "Si les dépenses sont inférieures aux recettes, nous avons un bénéfice. Mais si dépenses > recettes, nous avons une perte."
# Bad. Skips Translating text between "<" and ">".
text = "If expenses < revenue then we have a profit, but if expenses > revenue then we have a loss."
Aws::Translate::Client.new.translate_text(text: text, source_language_code: 'en', target_language_code: 'fr').translated_text
=> "Si les dépenses sont < revenue then we have a profit, but if expenses > des recettes, nous avons une perte."
# Bad. Skips Translating text between "<" and ">".
text = "If expenses < revenue then we have a profit, but if expenses > revenue then we have a loss."
Aws::Translate::Client.new.translate_text(text: text, source_language_code: 'en', target_language_code: 'fr').translated_text
=> "Si les dépenses sont < revenue then we have a profit, but if expenses > des recettes, nous avons une perte."
Regression Issue
- Select this option if this issue appears to be a regression.
Expected Behavior
A. Do not return DNT ID values when there are extra < or > characters in the text.
B. Do not skip translating text between < and > characters.
Current Behavior
A. Returns "<DNT_..." value which wipes out some of the input text.
B. Skips translating text between < and > characters.
Reproduction Steps
# Returns internal DNT ID
Aws::Translate::Client.new.translate_text(text: '<<span translate="no">Skip me</span>', source_language_code: 'en', target_language_code: 'fr').translated_text
=> "<DNT_GEBKJMMFHEHCKOAJBKHKJHCAkDHDNDDD"
# Doesn't translate text between "<" and ">" characters
text = "If expenses < revenue then we have a profit, but if expenses > revenue then we have a loss."
Aws::Translate::Client.new.translate_text(text: text, source_language_code: 'en', target_language_code: 'fr').translated_text
=> "Si les dépenses sont < revenue then we have a profit, but if expenses > des recettes, nous avons une perte."
Possible Solution
No response
Additional Information/Context
No response
Gem name ('aws-sdk', 'aws-sdk-resources' or service gems like 'aws-sdk-s3') and its version
aws-sdk-translate (1.79.0)
Environment details (Version of Ruby, OS environment)
Ruby 3.2.6, macOS Sonoma 14.7.3
- 主要言語
- Ruby
- スター
- 3.7k
- フォーク
- 1.2k
- 平均マージ
- 1日 16時間
- マージ済み PR(30日)
- 25
環境構築
- Dockerfile・Docker Compose ファイルなし
- プルリクエストのテンプレートあり
- コントリビューションガイドを読む
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
aws/aws-sdk-ruby のほかの issue
-
service-api
難易度 2/5 1〜3時間 初心者へのやさしさ 68/100
aws/aws-sdk-ruby#3395 · コメント 1 件 ·
メンテナーはふだん 1 日以内に返信
-
BedrockAgentCore: invoke_agent_runtime buffers entire response instead of streaming in real-timeオープンdocumentation p3 queued
難易度 4/5 3〜5日 初心者へのやさしさ 48/100
aws/aws-sdk-ruby#3348 · コメント 6 件 · リアクション 1 件 ·
メンテナーはふだん 1 日以内に返信
-
feature-request needs-major-version
難易度 3/5 1〜2日 初心者へのやさしさ 48/100
aws/aws-sdk-ruby#3241 · コメント 5 件 ·
メンテナーはふだん 1 日以内に返信
-
investigating service-api
難易度 4/5 3〜5日 初心者へのやさしさ 35/100
aws/aws-sdk-ruby#3217 · コメント 4 件 ·
メンテナーはふだん 1 日以内に返信
-
feature-request
難易度 3/5 1〜2日 初心者へのやさしさ 35/100
aws/aws-sdk-ruby#3190 · コメント 3 件 ·
メンテナーはふだん 1 日以内に返信
aws/aws-sdk-ruby の issue をすべて見る
似ている issue
-
[Bug] Chatwoot v4.19.0 – Super Admin returns 500 due to missing superadmin.scss Vite manifest entryオープンBug
難易度 2/5 1〜3時間 初心者へのやさしさ 76/100
メンテナーはふだん 2 日以内に返信
-
PRM baseline System 1 and 2 fans run continuously in unoccupied hours (low priority)対応中かも @anchapin が今日担当しました。 オープン
難易度 2/5 1〜3時間 初心者へのやさしさ 70/100
NatLabRockies/openstudio-standards#2167 ·
メンテナーはふだん 1 日以内に返信
-
難易度 1/5 1時間未満 初心者へのやさしさ 84/100
-
難易度 2/5 1〜3時間 初心者へのやさしさ 65/100
-
internal
難易度 2/5 1〜3時間 初心者へのやさしさ 70/100
Kong/developer.konghq.com#7716 ·
メンテナーはふだん 1 日以内に返信