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