Ruby SDK

الترجمة بالذكاء الاصطناعي باستخدام Ruby وLingo.dev

مقدمة

يقوم Lingo.dev Ruby SDK بترجمة النصوص وكائنات Hash والمحادثات مع دعم العمليات الدفعية وتتبع التقدم والمعالجة المتزامنة. يتعامل مع الحمولا�� الكبيرة عن طريق تقسيم المحتوى تلقائيًا إلى أحجام دفعات مثالية ويدعم المسارد للحفاظ على اتساق المصطلحات.

التثبيت

gem

gem install lingodotdev

Bundler

أضف إلى ملف Gemfile الخاص بك:

gem 'lingodotdev'

ثم قم بتشغيل:

bundle install

الترجمة السريعة

تجاوز إدارة المثيلات للترجمات لمرة واحدة. تتعامل هذه الطرق مع دورة حياة المحرك تلقائيًا وتستخدم الوضع السريع افتراضيًا، مما يجعلها مثالية لأدوات CLI والسكريبتات.

require 'lingodotdev'

# Translate text
text_result = LingoDotDev::Engine.quick_translate(
  'Hello world',
  api_key: ENV['LINGODOTDEV_API_KEY'],
  target_locale: 'es'
)
puts "Text: #{text_result}"

# Translate object
object_result = LingoDotDev::Engine.quick_translate(
  { greeting: 'Hello', farewell: 'Goodbye' },
  api_key: ENV['LINGODOTDEV_API_KEY'],
  target_locale: 'fr'
)
puts "Object: #{object_result}"

الاستخدام الأساسي

يتطلب SDK مفتاح API من Lingo.dev.

require 'lingodotdev'

engine = LingoDotDev::Engine.new(api_key: ENV['LINGODOTDEV_API_KEY'])

result = engine.localize_text(
  'Welcome! We missed you.',
  target_locale: 'es'
)
puts result

ترجمة النص مع تتبع التقدم

تتبع تقدم الترجمة باستخدام دالة رد الاتصال. حتى النصوص المفردة تمر عبر أداة التقسيم، مما يتيح الإبلاغ عن التقدم للنصوص الطويلة ويوفر سلوكًا متسقًا عبر جميع أنواع المحتوى.

require 'lingodotdev'

engine = LingoDotDev::Engine.new(api_key: ENV['LINGODOTDEV_API_KEY'])

result = engine.localize_text(
  'We sent a confirmation email.',
  target_locale: 'es'
) do |progress|
  puts "Progress: #{progress}%"
end

puts "Result: #{result}"

ترجمة الكائنات

ترجمة كائنات Hash المتداخلة مع الحفاظ على البنية. يعالج SDK بشكل تكراري جميع قيم النصوص بغض النظر عن العمق.

require 'lingodotdev'

content = {
  title: 'Welcome',
  cta: 'Start your free trial',
  footer: {
    legal: 'All rights reserved.',
    help: 'Need help?'
  }
}

engine = LingoDotDev::Engine.new(api_key: ENV['LINGODOTDEV_API_KEY'])

result = engine.localize_object(content, target_locale: 'es')
puts result

الترجمة الدفعية إلى لغات متعددة

ترجمة المحتوى إلى لغات مستهدفة متعددة في استدعاء واحد. يُرجع مصفوفة تحتوي على نتيجة واحدة لكل لغة مستهدفة، بنفس الترتيب المطلوب.

require 'lingodotdev'

engine = LingoDotDev::Engine.new(api_key: ENV['LINGODOTDEV_API_KEY'])

# Translate text to multiple languages
text_results = engine.batch_localize_text(
  'Welcome to our application',
  target_locales: ['es', 'fr', 'de'],
  fast: true
)
puts "Text results: #{text_results}"

ترجمة الكائنات على دفعات

ترجمة كائنات متعددة إلى نفس اللغة المستهدفة. مفيد لمعالجة مجموعات من عناصر المحتوى بكفاءة.

require 'lingodotdev'

engine = LingoDotDev::Engine.new(api_key: ENV['LINGODOTDEV_API_KEY'])

objects = [
  { title: 'Welcome', body: 'Hello there' },
  { title: 'About', body: 'Learn more about us' },
  { title: 'Contact', body: 'Get in touch' }
]

results = engine.batch_localize_objects(
  objects,
  target_locale: 'es',
  concurrent: true
)

results.each do |result|
  puts "#{result[:title]}: #{result[:body]}"
end

ترجمة المحادثات

ترجمة رسائل المحادثة مع الحفاظ على أسماء المتحدثين. يجب أن تحتوي كل رسالة على مفتاحي :name و :text. مفيد لترجمة محادثات الدعم أو سجلات المحادثات أو أنظمة الحوار دون فقدان بنية المحادثة.

require 'lingodotdev'

chat = [
  { name: 'Alice', text: 'Hello everyone!' },
  { name: 'Bob', text: 'How are you doing?' },
  { name: 'Alice', text: 'Great, thanks for asking!' }
]

engine = LingoDotDev::Engine.new(api_key: ENV['LINGODOTDEV_API_KEY'])

result = engine.localize_chat(chat, target_locale: 'es')

result.each do |message|
  puts "#{message[:name]}: #{message[:text]}"
end

المعالجة المتسلسلة مع تتبع التقدم

يتيح الوضع المتسلسل استدعاءات تفصيلية لتتبع التقدم. يتلقى الاستدعاء نسبة التقدم المئوية لكل دفعة تمت معالجتها، وهو مفيد لتصحيح مشكلات الترجمة أو عرض تقدم مفصل في واجهات المستخدم.

require 'lingodotdev'

content = {
  welcome: 'Hello',
  goodbye: 'Farewell',
  help: 'Need assistance?'
}

engine = LingoDotDev::Engine.new(api_key: ENV['LINGODOTDEV_API_KEY'])

result = engine.localize_object(content, target_locale: 'es') do |progress|
  puts "#{progress}% complete"
end

puts result

المعالجة المتزامنة

معالجة الأجزاء بشكل متوازٍ لترجمة أسرع. يضحي هذا الوضع بتتبع التقدم من أجل السرعة، مما يجعله مثالياً لأحمال العمل الإنتاجية حيث تكون الإنتاجية أهم من ملاحظات المستخدم.

require 'lingodotdev'

content = {
  header: { title: 'Welcome', subtitle: 'Get started' },
  body: { intro: 'Learn more', details: 'Full description' },
  footer: { copyright: '2024', contact: 'Email us' }
}

engine = LingoDotDev::Engine.new(api_key: ENV['LINGODOTDEV_API_KEY'])

result = engine.localize_object(
  content,
  target_locale: 'es',
  concurrent: true
)

puts result

البيانات المرجعية

توفير مسارد أو ترجمات سابقة لضمان الاتساق. يتم إرسال البيانات المرجعية مع كل جزء إلى واجهة برمجة التطبيقات، لذا احتفظ بها بحجم معقول. استخدم هذا لمصطلحات العلامة التجارية أو المفردات التقنية أو الحفاظ على اتساق الترجمة عبر تحديثات المنتج.

require 'lingodotdev'

content = { cta: 'Start your free trial', title: 'Welcome' }

reference = {
  es: { cta: 'Comienza tu prueba gratuita' },
  fr: { cta: 'Commencez votre essai gratuit' }
}

engine = LingoDotDev::Engine.new(api_key: ENV['LINGODOTDEV_API_KEY'])

result = engine.localize_object(
  content,
  target_locale: 'es',
  reference: reference,
  concurrent: true
)

puts result

التكوين

التحكم في سلوك المعالجة على دفعات ونقاط نهاية واجهة برمجة التطبيقات. تقوم حزمة التطوير بتقسيم الحمولات الكبيرة بناءً على قيود عدد المفاتيح وعدد الكلمات، مما يمنع انتهاء مهلة واجهة برمجة التطبيقات ويحسن الموثوقية لمهام الترجمة الكبيرة.

require 'lingodotdev'

engine = LingoDotDev::Engine.new(
  api_key: ENV['LINGODOTDEV_API_KEY'],
  api_url: 'https://engine.lingo.dev',
  batch_size: 25,              # Items per chunk (1-250)
  ideal_batch_item_size: 250   # Words per chunk (1-2500)
)

result = engine.localize_text(
  'Reset your password',
  target_locale: 'es',
  fast: true
)

puts result

يمكنك أيضاً التكوين باستخدام كتلة:

require 'lingodotdev'

engine = LingoDotDev::Engine.new(api_key: ENV['LINGODOTDEV_API_KEY']) do |config|
  config.batch_size = 50
  config.ideal_batch_item_size = 500
end

result = engine.localize_text('Hello world', target_locale: 'es')
puts result

اكتشاف اللغة

اكتشاف لغة نص معين. مفيد لتوجيه المحتوى تلقائياً إلى خط الترجمة الصحيح أو التحقق من صحة لغة إدخال المستخدم.

require 'lingodotdev'

engine = LingoDotDev::Engine.new(api_key: ENV['LINGODOTDEV_API_KEY'])

locale = engine.recognize_locale('Guten Morgen')
puts "Detected language: #{locale}"

فحص مفتاح API

تحقق من الحساب الذي يمتلك مفتاح API. يُرجع nil في حالة فشل المصادقة. مفيد لتصحيح مشكلات المصادقة أو عرض معلومات الحساب في أدوات الإدارة.

require 'lingodotdev'

engine = LingoDotDev::Engine.new(api_key: ENV['LINGODOTDEV_API_KEY'])

user = engine.whoami
if user
  puts "Authenticated as: #{user[:email]}"
else
  puts 'Authentication failed'
end

معالجة الأخطاء

يُعرّف SDK فئات استثناءات مخصصة لسيناريوهات الأخطاء المختلفة. ميّز بين أخطاء المستخدم (ValidationError) ومشكلات البنية التحتية (ServerError، APIError) لتطبيق منطق إعادة المحاولة المناسب.

require 'lingodotdev'

begin
  engine = LingoDotDev::Engine.new(api_key: ENV['LINGODOTDEV_API_KEY'])
  result = engine.localize_text('Hello', target_locale: 'es')
  puts result
rescue LingoDotDev::ValidationError => e
  puts "Invalid parameters or bad request: #{e.message}"
rescue LingoDotDev::AuthenticationError => e
  puts "Authentication error: #{e.message}"
rescue LingoDotDev::ServerError => e
  puts "Server or network error: #{e.message}"
rescue LingoDotDev::APIError => e
  puts "API error: #{e.message}"
rescue LingoDotDev::Error => e
  puts "Error: #{e.message}"
end