immosquare-translate 0.1.6 → 0.1.7

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: ebb9b4954484db537e1e5a348615ec85fd548699a1163615fa3963f394eca358
4
- data.tar.gz: f7a10ba2036eaeb0ce74846b2b87c9fc6fdf785fec27094bc1ea96a953e96b53
3
+ metadata.gz: fdfdc479af37a288d9d1b16fad5aa331509facfaf906982f2eeec13c4f88bf89
4
+ data.tar.gz: d4025b70638d454d4363abf40dd29f0a6d86bae51406cf60f0b5dd4b3e77646f
5
5
  SHA512:
6
- metadata.gz: ef04b72ee73ebb5d43f8271731a3c508bf0c60549a2e102f687e05f2dcd83db81ab827e9bc3fa61b7a76af62be8cce67ecb19165ef80e0a526765d3092d28105
7
- data.tar.gz: 722e14d7315e7d140b5ee9512351a548120c8922aee79147cb4faf4627a21fb316c456e14741a9acd1ff89db8d576aa4bfcaec2f77bd1166c140f196365403c1
6
+ metadata.gz: e5da8f3f28db2e39bc251d9a9f466cafdadd0f90a2a122b7e62f05ca66b413e6afda8685c634ab78aa3a5dadc15de513596bef9163516a40d97623a87d454662
7
+ data.tar.gz: b9d956d253702bb30027f90a8052184be56ce86fc246e728211847f038bbc5ceea885dbc6345f0955d1d59fb7ab102948fa81429c5d71129050ddf6ae8ce77de
@@ -26,26 +26,27 @@ module ImmosquareTranslate
26
26
  "Authorization" => "Bearer #{ImmosquareTranslate.configuration.openai_api_key}"
27
27
  }
28
28
 
29
- prompt_system = "As a sophisticated translation AI, your role is to accurately translate sentences from a specified source language to multiple target languages. " \
30
- "All translations must be returned as a single, pure JSON string, adhering strictly to JSON format standards. Use ISO 639-1 codes to specify languages. " \
31
- "Should the input be HTML, return the translated content preserving the original HTML formatting. " \
32
- "In cases where the sentence contains newline characters '\\n', or tab characters '\\t', ensure these are retained in the translation without alteration. " \
33
- "Your output should be free from markdown (e.g., ```json) or any extraneous formatting characters, focusing solely on maintaining the integrity of the JSON structure."
29
+ prompt_system = "As a sophisticated translation AI, your role is to translate sentences from a specified source language to multiple target languages.\n" \
30
+ "Rules to respect:\n" \
31
+ "- Use ISO 639-1 language codes for specifying languages." \
32
+ "- Correct any spelling or grammatical errors in the source text before translating.\n" \
33
+ "- If the source language is also a target language, include the corrected version of the sentence for that language as well, if not dont include it.\n" \
34
+ "- If string to translate is html, you should return the translated html.\n" \
35
+ "- If string to translate contains 3 underscores in row ___, keep them, don't translate the them, don't remove them, don't change them for dashes (they correspond to the newline)\n" \
36
+ "- If string to translate contains 3 dashes in row ---, keep them, don't translate the them, don't remove them, don't change them for underscores (they correspond to the tabulation)\n" \
37
+ "- Ensure that the output does not include markdown (```json) or any other formatting characters. Adhere to the JSON structure meticulously.\n" \
38
+ "- Ensure the output strictly follows this JSON format, without any extraneous characters or formatting.\n" \
39
+ "- Format the translation output as a JSON string adhering to the following structure: {\"datas\":[{\"locale_iso\": \"Translated Text\"}]}, where 'locale_iso' is replaced with the appropriate ISO 639-1 code for each translation."
34
40
 
35
41
 
42
+ prompt = "Translate the #{text.size} following #{text.size == 1 ? "sentence" : "sentences"} from the source language (ISO 639-1 code: #{from}) to the target languages specified: #{to_iso.map {|iso, language| "#{language} (ISO 639-1 code: #{iso})" }.join(", ")}. "
36
43
 
37
44
 
38
- prompt = "Translate the #{text.size} #{text.size == 1 ? "sentence" : "sentences"} provided below from the source language (ISO 639-1 code: #{from}) to the target languages specified: #{to_iso.map {|iso, language| "#{language} (ISO 639-1 code: #{iso})" }.join(", ")}. " \
39
- "Before translating, correct any spelling or grammatical errors in each sentence. " \
40
- "If the source language is also a target language, include the corrected version of the sentence for that language as well. " \
41
- "Format the translation output as a JSON string adhering to the following structure: " \
42
- "{\"datas\":[{\"locale_iso\": \"Translated Text\"}]}, where 'locale_iso' is replaced with the appropriate ISO 639-1 code for each translation. " \
43
- "Ensure the output strictly follows this JSON format, without any extraneous characters or formatting. " \
44
- "Sentences to translate:"
45
-
46
-
45
+ ##============================================================##
46
+ ## we replace the \n by ___ to avoid the API to remove them
47
+ ##============================================================##
47
48
  text.each_with_index do |sentence, index|
48
- prompt += "\n#{index + 1}: #{sentence}"
49
+ prompt += "\n#{index + 1}: #{sentence.gsub("\n", "___").gsub("\t", "---")}"
49
50
  end
50
51
 
51
52
 
@@ -90,7 +91,9 @@ module ImmosquareTranslate
90
91
  content = JSON.parse(choice["message"]["content"])
91
92
  datas = content["datas"]
92
93
  datas.map do |hash|
93
- hash.select {|key, _| to.include?(key) }
94
+ hash
95
+ .select {|key, _| to.include?(key) }
96
+ .transform_values {|value| value.gsub("___", "\n").gsub("---", "\t") }
94
97
  end.reject(&:empty?)
95
98
  rescue StandardError => e
96
99
  puts(e.message)
@@ -1,3 +1,3 @@
1
1
  module ImmosquareTranslate
2
- VERSION = "0.1.6".freeze
2
+ VERSION = "0.1.7".freeze
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: immosquare-translate
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.6
4
+ version: 0.1.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - IMMO SQUARE