مجموعة أدوات تطوير Ruby
الترجمة بالذكاء الاصطناعي مع Ruby وLingo.dev
مقدمة
تقوم مكتبة Lingo.dev لـ Ruby بترجمة النصوص وكائنات Hash ومحادثات الدردشة مع دعم للعمليات المجمعة وتتبع التقدم والمعالجة المتزامنة. تتعامل مع البيانات الكبيرة عن طريق تقسيم المحتوى تلقائيًا إلى أحجام دفعات مثالية وتدعم المعاجم للحفاظ على اتساق المصطلحات.
التثبيت
gem
gem install lingodotdev
Bundler
أضف إلى ملف Gemfile الخاص بك:
gem 'lingodotdev'
ثم قم بتشغيل:
bundle install
ترجمة سريعة
تخطى إدارة النسخ للترجمات الفردية. تتعامل هذه الطرق مع دورة حياة المحرك تلقائيًا وتستخدم الوضع السريع افتراضيًا، مما يجعلها مثالية لأدوات CLI والنصوص البرمجية.
require 'lingodotdev'
# ترجمة النص
text_result = LingoDotDev::Engine.quick_translate(
'Hello world',
api_key: ENV['LINGODOTDEV_API_KEY'],
target_locale: 'es'
)
puts "Text: #{text_result}"
# ترجمة الكائن
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'])
# ترجمة النص إلى لغات متعددة
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, # العناصر لكل دفعة (1-250)
ideal_batch_item_size: 250 # الكلمات لكل دفعة (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