
如何通过Shuttle API实现翻译流程集成开发者实战教程【免费下载链接】shuttleString extraction, translation and export tools for the 21st century. Moving strings around so you dont have to项目地址: https://gitcode.com/gh_mirrors/shuttle3/shuttleShuttle作为21世纪的字符串提取、翻译和导出工具其核心功能在于帮助开发者自动化处理多语言翻译流程。本文将详细介绍如何通过Shuttle API实现翻译流程的无缝集成从环境搭建到实际接口调用为开发者提供完整的实战指南。为什么选择Shuttle API进行翻译集成在全球化应用开发中多语言支持是不可或缺的一环。Shuttle通过提供强大的API接口让开发者能够轻松将翻译管理功能集成到现有工作流中。无论是动态创建翻译任务、查询翻译进度还是获取最终翻译结果Shuttle API都能提供高效、可靠的解决方案。图1Shuttle支持全球多语言翻译的可视化展示快速开始环境准备与项目搭建1. 克隆Shuttle项目代码首先需要将Shuttle项目代码克隆到本地环境git clone https://gitcode.com/gh_mirrors/shuttle3/shuttle cd shuttle2. 安装依赖并配置环境Shuttle基于Ruby on Rails开发因此需要确保系统中已安装Ruby和Bundler。执行以下命令安装项目依赖bundle install cp config/database.yml.example config/database.yml # 根据实际情况修改数据库配置 rails db:create db:migrate3. 获取API访问令牌API访问令牌api_token是调用Shuttle API的关键凭证。可以在项目设置中生成或通过数据库查询获取# 进入Rails控制台 rails console # 查找目标项目的api_token project Project.find_by(name: 你的项目名称) puts project.api_tokenShuttle API核心功能与接口详解Shuttle API v1版本提供了丰富的接口支持文章Article和组Group的管理以下是核心接口的详细说明。文章管理API文章Article是Shuttle中翻译内容的基本单元包含多个可翻译的章节Section。创建文章请求地址POST /api/v1/projects/:project_id/articles?api_token:api_token请求体参数name文章名称必填description文章描述sections_hash章节内容哈希格式如{ title: pHello/p, body: pWorld/p }base_rfc5646_locale基准语言代码如entargeted_rfc5646_locales目标语言哈希如{ fr: true, es-US: false }示例代码curl -X POST http://localhost:3000/api/v1/projects/1/articles?api_tokenyour_token \ -H Content-Type: application/json \ -d { article: { name: homepage, description: 网站首页翻译, base_rfc5646_locale: en, targeted_rfc5646_locales: { fr: true, de: true }, sections_hash: { title: h1Welcome/h1, content: pWelcome to our website/p } } }查询文章状态请求地址GET /api/v1/projects/:project_id/articles/:name?api_token:api_token响应示例{ name: homepage, ready: true, loading: false, base_rfc5646_locale: en, targeted_rfc5646_locales: { fr: true, de: true }, last_import_finished_at: 2026-08-14T08:56:52Z }获取翻译结果当文章翻译完成后可通过manifest接口获取最终翻译结果请求地址GET /api/v1/projects/:project_id/articles/:name/manifest?api_token:api_token响应示例{ fr: { title: h1Bienvenue/h1, content: pBienvenue sur notre site web/p }, de: { title: h1Willkommen/h1, content: pWillkommen auf unserer Website/p } }组管理API组Group用于对文章进行分类管理方便批量处理翻译任务。创建组请求地址POST /api/v1/projects/:project_id/groups?api_token:api_token请求体参数name组名称必填description组描述查询组列表请求地址GET /api/v1/projects/:project_id/groups?api_token:api_tokenShuttle API工作流程解析Shuttle API的翻译流程基于其内部数据模型和异步任务处理机制理解这一流程有助于更好地集成和调试。数据模型概览Shuttle的核心数据模型包括Project项目、Article文章、Section章节、Key翻译键和Translation翻译等它们之间的关系如下图2Shuttle核心数据模型关系图异步任务处理流程当通过API创建或更新文章时Shuttle会触发一系列异步任务包括内容提取、翻译处理和索引更新等。这些任务由Sidekiq workers处理流程如下图3Shuttle翻译任务处理流程图主要工作流包括ArticleImporter解析文章内容提取可翻译文本SectionKeyCreator为章节内容创建翻译键KeyTranslationAdderAndRemover管理翻译键与目标语言的关联CommitRecalculator更新翻译状态和统计信息实战案例集成Shuttle API到CI/CD流程以下是一个将Shuttle API集成到CI/CD流程的示例实现代码提交后自动更新翻译内容。1. 在项目中添加翻译更新脚本创建script/update_translations.rbrequire net/http require json PROJECT_ID ENV[SHUTTLE_PROJECT_ID] API_TOKEN ENV[SHUTTLE_API_TOKEN] ARTICLE_NAME homepage SECTIONS_PATH app/views/home # 读取HTML文件内容 sections_hash {} Dir.glob(#{SECTIONS_PATH}/*.html.erb).each do |file| name File.basename(file, .html.erb) sections_hash[name] File.read(file) end # 构建API请求 uri URI(http://shuttle-server/api/v1/projects/#{PROJECT_ID}/articles/#{ARTICLE_NAME}) http Net::HTTP.new(uri.host, uri.port) request Net::HTTP::Patch.new(uri.path) request[Content-Type] application/json request.set_form_data({ api_token: API_TOKEN, article: { sections_hash: sections_hash.to_json } }) # 发送请求 response http.request(request) puts Translation update response: #{response.body}2. 在CI配置中添加翻译更新步骤以GitLab CI为例修改.gitlab-ci.ymlstages: - test - update_translations update_translations: stage: update_translations script: - ruby script/update_translations.rb only: - main environment: variables: SHUTTLE_PROJECT_ID: 1 SHUTTLE_API_TOKEN: $SHUTTLE_API_TOKEN常见问题与解决方案Q1: API调用返回401 Unauthorized可能原因api_token无效或项目ID错误。解决方法验证项目ID和api_token是否匹配检查请求参数是否正确传递api_tokenQ2: 翻译结果长时间未更新可能原因异步任务处理延迟或失败。解决方法检查Sidekiq工作队列状态rails sidekiq:status查看应用日志tail -f log/production.log通过API查询文章状态确认loading字段是否为falseQ3: sections_hash格式错误可能原因HTML内容包含未转义的特殊字符。解决方法确保HTML内容正确转义使用JSON.dump处理哈希数据总结与扩展通过Shuttle API开发者可以轻松实现翻译流程的自动化和集成极大提高多语言应用的开发效率。本文介绍的基础接口和实战案例只是Shuttle功能的一部分更多高级特性如翻译质量检查、术语表管理等可以通过深入研究项目源码进一步探索。Shuttle API的核心实现代码位于app/controllers/api/v1/目录下感兴趣的开发者可以查看app/controllers/api/v1/articles_controller.rb了解更多接口细节。随着全球化应用的不断发展Shuttle将持续优化其API功能为开发者提供更强大、更灵活的翻译管理解决方案。【免费下载链接】shuttleString extraction, translation and export tools for the 21st century. Moving strings around so you dont have to项目地址: https://gitcode.com/gh_mirrors/shuttle3/shuttle创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考