<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: JimmyLiao</title>
    <description>The latest articles on Forem by JimmyLiao (@jimmyliao).</description>
    <link>https://forem.com/jimmyliao</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F678134%2F70d47483-0598-4dbd-b2a1-a61d9823721f.jpeg</url>
      <title>Forem: JimmyLiao</title>
      <link>https://forem.com/jimmyliao</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/jimmyliao"/>
    <language>en</language>
    <item>
      <title>Free Academic Paper Translation with TranslateGemma</title>
      <dc:creator>JimmyLiao</dc:creator>
      <pubDate>Mon, 19 Jan 2026 15:06:50 +0000</pubDate>
      <link>https://forem.com/gde/free-academic-paper-translation-with-translategemma-1n28</link>
      <guid>https://forem.com/gde/free-academic-paper-translation-with-translategemma-1n28</guid>
      <description>&lt;h2&gt;
  
  
  The Problem: You're Wasting Hours on Research Papers
&lt;/h2&gt;

&lt;p&gt;Here's a situation you might recognize:&lt;/p&gt;

&lt;p&gt;You open an arXiv paper. It's groundbreaking work in your field. You &lt;strong&gt;need&lt;/strong&gt; to understand it. But after 20 minutes staring at the abstract, you've only grasped about 60% of what's happening.&lt;/p&gt;

&lt;p&gt;So you start the copy-paste dance:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Highlight a paragraph 📋&lt;/li&gt;
&lt;li&gt;Open DeepL in another tab&lt;/li&gt;
&lt;li&gt;Paste and translate&lt;/li&gt;
&lt;li&gt;Copy translation back to your notes&lt;/li&gt;
&lt;li&gt;Lose all formatting 😫&lt;/li&gt;
&lt;li&gt;Repeat 47 more times...&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Three hours later, you're exhausted, your notes are a mess, and you're not even sure you understood the methodology correctly.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What if I told you there's a better way?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;In this post, I'll show you how to translate entire arXiv papers into beautiful &lt;strong&gt;bilingual HTML&lt;/strong&gt; — original and translation side-by-side — using Google's &lt;strong&gt;TranslateGemma&lt;/strong&gt; model on &lt;strong&gt;free Colab GPU&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Set it up once, translate forever. Let's dive in.&lt;/p&gt;




&lt;h2&gt;
  
  
  🎯 What Makes This Different?
&lt;/h2&gt;

&lt;p&gt;Before we jump into the tutorial, let's understand why this approach beats traditional tools:&lt;/p&gt;

&lt;h3&gt;
  
  
  TranslateGemma is Like a Specialized Translator for Academics
&lt;/h3&gt;

&lt;p&gt;Think of general translation APIs (DeepL, Google Translate) as &lt;strong&gt;generalist interpreters&lt;/strong&gt;. They're great at casual conversations but sometimes stumble on domain-specific jargon.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;TranslateGemma&lt;/strong&gt; is like hiring a &lt;strong&gt;PhD student who speaks both languages&lt;/strong&gt; — it understands:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Technical terminology in context&lt;/li&gt;
&lt;li&gt;Academic writing conventions&lt;/li&gt;
&lt;li&gt;The difference between "model" (ML model) vs "model" (fashion model)&lt;/li&gt;
&lt;li&gt;How to preserve mathematical notation&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  The Bilingual HTML is Like Having Training Wheels
&lt;/h3&gt;

&lt;p&gt;Instead of reading pure translation, you get:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;┌─────────────────────────────────┬─────────────────────────────────┐
│ Original (English)              │ Translation (Your Language)     │
├─────────────────────────────────┼─────────────────────────────────┤
│ This work introduces Gemma...   │ 本研究介紹了 Gemma...             │
│ ...                             │ ...                             │
└─────────────────────────────────┴─────────────────────────────────┘
         ↑ Navigate with ← → keys ↑
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This means:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;✅ &lt;strong&gt;Learn English&lt;/strong&gt; while reading in your language&lt;/li&gt;
&lt;li&gt;✅ &lt;strong&gt;Check translations&lt;/strong&gt; when something feels off&lt;/li&gt;
&lt;li&gt;✅ &lt;strong&gt;Build vocabulary&lt;/strong&gt; by seeing terms in context&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  ⚡ Why Free Colab T4 GPU Changes Everything
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;The old way:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Pay $0.01-0.02 per page for API credits&lt;/li&gt;
&lt;li&gt;Or run models locally (if you have a GPU)&lt;/li&gt;
&lt;li&gt;Or keep copy-pasting...&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;The new way:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Google Colab gives you &lt;strong&gt;free T4 GPU access&lt;/strong&gt; (15GB VRAM)&lt;/li&gt;
&lt;li&gt;TranslateGemma 4B fits comfortably in that memory&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Zero cost&lt;/strong&gt; for reasonable daily usage&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;What You Get&lt;/th&gt;
&lt;th&gt;The Cost&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Tesla T4 GPU (15GB)&lt;/td&gt;
&lt;td&gt;$0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;TranslateGemma 4B model&lt;/td&gt;
&lt;td&gt;$0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;~3 minutes per page&lt;/td&gt;
&lt;td&gt;$0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Unlimited papers (within daily quota)&lt;/td&gt;
&lt;td&gt;$0&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The catch? About &lt;strong&gt;3 minutes per page&lt;/strong&gt; translation time. But honestly? That's the time you'd spend copy-pasting anyway, and you get &lt;strong&gt;much better results&lt;/strong&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  🚀 Let's Build This: 10-Minute Setup
&lt;/h2&gt;

&lt;p&gt;Instead of drowning you in theory, let's get your first paper translated. We'll explain what's happening as we go.&lt;/p&gt;

&lt;h3&gt;
  
  
  Prerequisites (5 minutes setup, one-time)
&lt;/h3&gt;

&lt;p&gt;You'll need:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Google Account&lt;/strong&gt; (for Colab)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;HuggingFace Account&lt;/strong&gt; (&lt;a href="https://huggingface.co/join" rel="noopener noreferrer"&gt;sign up free&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;HF Token&lt;/strong&gt; with read access (&lt;a href="https://huggingface.co/settings/tokens" rel="noopener noreferrer"&gt;create here&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Accept Gemma Terms&lt;/strong&gt; (&lt;a href="https://huggingface.co/google/translategemma-4b-it" rel="noopener noreferrer"&gt;click here&lt;/a&gt;)&lt;/li&gt;
&lt;/ol&gt;




&lt;h3&gt;
  
  
  Step 1: Open Notebook &amp;amp; Enable GPU (1 minute)
&lt;/h3&gt;

&lt;p&gt;Click this badge:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://colab.research.google.com/g&amp;lt;br&amp;gt;%0A%20%20ithub/jimmyliao/trans-gemma/blob/main/arxiv-reader.ipynb" rel="noopener noreferrer"&gt;👉 Click here to open in Google Colab&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Then:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Runtime&lt;/strong&gt; menu → &lt;strong&gt;Change runtime type&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Select &lt;strong&gt;T4 GPU&lt;/strong&gt; from dropdown&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;Save&lt;/strong&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Why T4?&lt;/strong&gt; It's the free tier GPU that's perfect for this task — enough memory for the 4B model, but not overkill.&lt;/p&gt;




&lt;h3&gt;
  
  
  Step 2: Run Environment Detection (30 seconds)
&lt;/h3&gt;

&lt;p&gt;Execute the first code cell (click ▶️ or press Shift+Enter):&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="c1"&gt;# This auto-detects whether you're on Colab, GCP, or local Jupyter
&lt;/span&gt;&lt;span class="n"&gt;ENV&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;detect_environment&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Output:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;================================================================================
🔍 Environment Detection
================================================================================
🖥️  Environment: COLAB
🐍 Python: 3.10
📂 Working dir: /content
================================================================================
✅ Environment: COLAB - Ready!
================================================================================
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffawdempb6vm3szm4z1d0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffawdempb6vm3szm4z1d0.png" alt="Environment Detection Output" width="800" height="213"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;The notebook automatically detects your runtime environment&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What's happening here?&lt;/strong&gt;&lt;br&gt;
The notebook adapts to your environment automatically. Same notebook works on:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Google Colab (most users)&lt;/li&gt;
&lt;li&gt;GCP Custom Runtime (advanced)&lt;/li&gt;
&lt;li&gt;Local Jupyter (if you have GPU)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;No need to modify code — it just works™.&lt;/p&gt;


&lt;h3&gt;
  
  
  Step 3: Install Dependencies (2 minutes)
&lt;/h3&gt;

&lt;p&gt;Next cell installs packages based on your environment:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="c1"&gt;# Colab gets lightweight dependencies
&lt;/span&gt;&lt;span class="err"&gt;!&lt;/span&gt;&lt;span class="n"&gt;pip&lt;/span&gt; &lt;span class="n"&gt;install&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;q&lt;/span&gt; &lt;span class="n"&gt;huggingface_hub&lt;/span&gt; &lt;span class="n"&gt;transformers&lt;/span&gt; &lt;span class="n"&gt;accelerate&lt;/span&gt; \
             &lt;span class="n"&gt;sentencepiece&lt;/span&gt; &lt;span class="n"&gt;protobuf&lt;/span&gt; &lt;span class="n"&gt;pymupdf&lt;/span&gt; &lt;span class="n"&gt;pillow&lt;/span&gt; \
             &lt;span class="n"&gt;opencc&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;python&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;reimplemented&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Key package:&lt;/strong&gt; &lt;code&gt;opencc-python-reimplemented&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;This ensures if you're translating to &lt;strong&gt;Traditional Chinese&lt;/strong&gt; (Taiwan/Hong Kong), you get 基&lt;strong&gt;於&lt;/strong&gt; not 基&lt;strong&gt;于&lt;/strong&gt;. Small details matter in academic writing.&lt;/p&gt;

&lt;p&gt;Just click ▶️ and wait for installation to complete.&lt;/p&gt;




&lt;h3&gt;
  
  
  Step 4: Authenticate with HuggingFace (1 minute)
&lt;/h3&gt;

&lt;p&gt;The notebook will prompt for your HF token:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;📝 Please enter HuggingFace Token:
   💡 Tip: Use Colab Secrets (🔑 icon) for better security
   1. Get token: https://huggingface.co/settings/tokens
   2. Accept model: https://huggingface.co/google/translategemma-4b-it

Token: █
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Paste your token and press Enter. Done.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Security tip:&lt;/strong&gt; Use Colab's built-in secrets manager (🔑 sidebar icon) instead of pasting tokens directly if you're sharing notebooks.&lt;/p&gt;




&lt;h3&gt;
  
  
  Step 5: Load the Model (First run: 5 min, After: 30 sec)
&lt;/h3&gt;

&lt;p&gt;This is where the magic happens:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;transformers_backend&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;TransformersBackend&lt;/span&gt;

&lt;span class="n"&gt;backend&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;TransformersBackend&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;span class="n"&gt;result&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;backend&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;load_model&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;First run output:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;🚀 Loading TranslateGemma (4B)...
   ⏳ Downloading model (~8.6GB) on first run...

Downloading: 100% |████████████████████| 8.6G/8.6G [04:32&amp;lt;00:00, 31.5MB/s]

✅ Model loaded!
📍 Device: cuda:0
📊 Load time: 37.8s
💾 Memory: 13.8 GB used / 15.0 GB total
🎉 Ready to translate!
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;What just happened?&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Downloaded TranslateGemma 4B (8.6GB) to Colab's disk&lt;/li&gt;
&lt;li&gt;Loaded model into GPU memory&lt;/li&gt;
&lt;li&gt;Cached for future runs (next time: 30 seconds!)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Grab a coffee ☕ on first run. It's worth the wait.&lt;/p&gt;




&lt;h3&gt;
  
  
  Step 6: Configure Your Translation (30 seconds)
&lt;/h3&gt;

&lt;p&gt;Now the fun part — telling it &lt;strong&gt;what&lt;/strong&gt; to translate:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="c1"&gt;# Which paper?
&lt;/span&gt;&lt;span class="n"&gt;ARXIV_ID&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;2403.08295&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;  &lt;span class="c1"&gt;# Gemma paper (or any arXiv ID)
&lt;/span&gt;
&lt;span class="c1"&gt;# Which pages?
&lt;/span&gt;&lt;span class="n"&gt;SECTIONS&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;abstract&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;  &lt;span class="c1"&gt;# Pages 1-3
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="c1"&gt;# What languages?
&lt;/span&gt;&lt;span class="n"&gt;SOURCE_LANG&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;en&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
&lt;span class="n"&gt;TARGET_LANG&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;zh-TW&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;  &lt;span class="c1"&gt;# Traditional Chinese (Taiwan)
&lt;/span&gt;
&lt;span class="c1"&gt;# Generate beautiful HTML?
&lt;/span&gt;&lt;span class="n"&gt;SAVE_HTML&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="bp"&gt;True&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Customization examples:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Translate intro section only:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;SECTIONS&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;intro&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Translate to Japanese:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;TARGET_LANG&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;ja&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Translate everything:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;SECTIONS&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;full&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;20&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;  &lt;span class="c1"&gt;# All pages
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Supported languages:&lt;/strong&gt; 50+ including &lt;code&gt;zh-TW&lt;/code&gt;, &lt;code&gt;zh-CN&lt;/code&gt;, &lt;code&gt;ja&lt;/code&gt;, &lt;code&gt;ko&lt;/code&gt;, &lt;code&gt;fr&lt;/code&gt;, &lt;code&gt;de&lt;/code&gt;, &lt;code&gt;es&lt;/code&gt;, &lt;code&gt;pt&lt;/code&gt;, &lt;code&gt;ru&lt;/code&gt;, etc.&lt;/p&gt;




&lt;h3&gt;
  
  
  Step 7: Hit Translate! (3 min per page)
&lt;/h3&gt;

&lt;p&gt;Execute the translation cell:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="c1"&gt;# Download PDF from arXiv
&lt;/span&gt;&lt;span class="n"&gt;pdf_path&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;total_pages&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;download_arxiv&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;ARXIV_ID&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="c1"&gt;# Translate page by page with progress bar
&lt;/span&gt;&lt;span class="k"&gt;with&lt;/span&gt; &lt;span class="nf"&gt;tqdm&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;total&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;desc&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;📖 Translating&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="n"&gt;pbar&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;page_num&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="nf"&gt;range&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
        &lt;span class="n"&gt;text&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;extract_text&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;pdf_path&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;page_num&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="n"&gt;result&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;backend&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;translate&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;text&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
                                  &lt;span class="n"&gt;source_lang&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;SOURCE_LANG&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
                                  &lt;span class="n"&gt;target_lang&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;TARGET_LANG&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="n"&gt;results&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;append&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;result&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="n"&gt;pbar&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;update&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Real output from my test:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;📥 Downloading arXiv:2403.08295
✅ Downloaded: 2403.08295.pdf (17 pages)

================================================================================
🚀 Translation Started
================================================================================
📊 Pages: 3
⏱️  Est. time: ~9 minutes

📖 Translating: 33% |████████▌         | 1/3 [02:48&amp;lt;05:36, 168.05s/page]
✅ Page 1: 168.05s

📖 Translating: 67% |█████████████████ | 2/3 [05:51&amp;lt;02:43, 163.25s/page]
✅ Page 2: 163.25s

📖 Translating: 100% |█████████████████| 3/3 [08:37&amp;lt;00:00, 166.29s/page]
✅ Page 3: 166.29s

================================================================================
✅ Translation Complete!
================================================================================
📊 Pages: 3
⏱️  Total: 8 min 37 sec
⚡ Avg: 2.8 min/page
================================================================================
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgwpo4bmtv6i774drocm4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgwpo4bmtv6i774drocm4.png" alt="Translation Progress" width="800" height="284"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Live translation progress with tqdm showing real-time status per page&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What's happening under the hood?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;For each page, the backend:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Sends text to TranslateGemma with a &lt;strong&gt;simple, direct prompt&lt;/strong&gt;:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Translate the following text from en to Traditional Chinese (Taiwan, 繁體中文).
Only output the translation, do not include explanations:

[Original text here]

Translation:
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Model generates translation using GPU acceleration&lt;/li&gt;
&lt;li&gt;Extracts clean translation from output&lt;/li&gt;
&lt;li&gt;Applies OpenCC post-processing (for zh-TW)&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Pro tip:&lt;/strong&gt; Pages with heavy math/tables take similar time — the model handles them well.&lt;/p&gt;




&lt;h3&gt;
  
  
  Step 8: View Results in Notebook
&lt;/h3&gt;

&lt;p&gt;Immediately after translation, you'll see:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;================================================================================
📄 Page 1 - ABSTRACT
================================================================================

📝 Original:
--------------------------------------------------------------------------------
This work introduces Gemma, a family of lightweight, state-of-the-art open
models built from the research and technology used to create Gemini models.
Gemma models demonstrate strong performance across academic benchmarks for
language understanding, reasoning, and safety.

🌐 Translation:
--------------------------------------------------------------------------------
論文摘要：
Gemma 是一系列基於 Gemini 的輕量級、先進的開源模型。這些模型在語言理解、
推理和安全性等方面的表現優異，並在 18 項文字任務中，在同等規模的開源模型
中表現更佳。
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Notice the quality:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;"lightweight" → "輕量級" ✅ (not "輕" or "光")&lt;/li&gt;
&lt;li&gt;"state-of-the-art" → "先進" ✅ (contextually appropriate)&lt;/li&gt;
&lt;li&gt;"benchmarks" → "基準測試" ✅ (technical term)&lt;/li&gt;
&lt;li&gt;Traditional Chinese: 基&lt;strong&gt;於&lt;/strong&gt; ✅ (not 基&lt;strong&gt;于&lt;/strong&gt;)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is &lt;strong&gt;way better&lt;/strong&gt; than copy-pasting into Google Translate.&lt;/p&gt;




&lt;h3&gt;
  
  
  Step 9: Download Interactive HTML (10 seconds)
&lt;/h3&gt;

&lt;p&gt;The final cell generates a self-contained HTML file:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="c1"&gt;# Generate bilingual HTML
&lt;/span&gt;&lt;span class="n"&gt;filename&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;arxiv_&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;ARXIV_ID&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt;_&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;SOURCE_LANG&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt;-&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;TARGET_LANG&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt;.html&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;

&lt;span class="c1"&gt;# Auto-download in Colab
&lt;/span&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;google.colab&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;files&lt;/span&gt;
&lt;span class="n"&gt;files&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;download&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;filename&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Output:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;💾 HTML saved: arxiv_2403.08295_en-zh-TW.html
📂 Full path: /content/arxiv_2403.08295_en-zh-TW.html
📊 Size: 143.2 KB
📄 Pages: 3

📥 To view the full HTML:
   1. Download: Right-click 'arxiv_2403.08295_en-zh-TW.html' in Files panel → Download
   2. Or use auto-download (Colab native only)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Open the HTML in your browser:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fm21xpisu1ow2ex4mgs04.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fm21xpisu1ow2ex4mgs04.png" alt="Bilingual HTML Interface - Header" width="800" height="90"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Clean header with title, language pair, date, and keyboard-friendly navigation&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Faypmj8wkk01m6tdch2w7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Faypmj8wkk01m6tdch2w7.png" alt="Bilingual HTML Interface - Side-by-Side Layout" width="800" height="318"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Original English (left) and Traditional Chinese translation (right) in perfect sync&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What you're seeing:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Header:&lt;/strong&gt; arXiv:2403.08295 Bilingual Translation&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Metadata:&lt;/strong&gt; en → zh-TW | 2026-01-19 14:22&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Navigation:&lt;/strong&gt; ◄ Prev | Page 1 (1/3) | Next ▶&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Hint bar:&lt;/strong&gt; 💡 Use ← → keys (yellow background for visibility)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Section header:&lt;/strong&gt; 📄 ABSTRACT - Page 1 ⏱️ 179.74s (shows translation time)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Dual columns:&lt;/strong&gt; Gray background for original, white for translation&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Features:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;✅ Side-by-side original + translation (never lose context)&lt;/li&gt;
&lt;li&gt;✅ Keyboard navigation (← → arrow keys for fast reading)&lt;/li&gt;
&lt;li&gt;✅ Page counter with progress ("Page 1 (1/3)")&lt;/li&gt;
&lt;li&gt;✅ Translation time per page (⏱️ 179.74s shown in purple header)&lt;/li&gt;
&lt;li&gt;✅ Works offline (no internet needed after download)&lt;/li&gt;
&lt;li&gt;✅ Mobile responsive (columns stack vertically on small screens)&lt;/li&gt;
&lt;li&gt;✅ Clean typography (monospace for original, sans-serif for translation)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;This is your forever-reference&lt;/strong&gt; for that paper. Share it, annotate it, or keep it for later.&lt;/p&gt;




&lt;h2&gt;
  
  
  🔬 Translation Quality: Let's Be Honest
&lt;/h2&gt;

&lt;p&gt;I tested this on the &lt;strong&gt;Gemma Technical Report&lt;/strong&gt; (arXiv:2403.08295), a genuinely complex paper with:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Model architecture details&lt;/li&gt;
&lt;li&gt;Training methodology&lt;/li&gt;
&lt;li&gt;Benchmark results (tables)&lt;/li&gt;
&lt;li&gt;Mathematical notation&lt;/li&gt;
&lt;li&gt;Lots of jargon ("multi-query attention", "RoPE embeddings", "supervised fine-tuning")&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Sample: Original Text
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;The Gemma model architecture is based on the transformer decoder (Vaswani et al., 2017).
The core parameters of the architecture are summarized in Table 1. Models are trained on
a context length of 8192 tokens. We also utilize several improvements proposed after the
original transformer paper, and list them below:

Multi-Query Attention (Shazeer, 2019). Notably, the 7B model uses multi-head attention
while the 2B checkpoints use multi-query attention (with num_kv_heads = 1), based on
ablations that showed that multi-query attention works well at small scales.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  TranslateGemma Output
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Gemma 模型架構基於 Transformer 解碼器（Vaswani 等人，2017）。架構的核心參數
總結於表 1 中。模型是在 8192 個 token 的上下文長度上訓練的。我們還使用了原始
Transformer 論文之後提出的幾項改進，並在下面列出：

多查詢注意力（Shazeer，2019）。值得注意的是，7B 模型使用多頭注意力，而 2B 檢查
點使用多查詢注意力（num_kv_heads = 1），這是基於消融研究顯示多查詢注意力在小規模
下效果良好。
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  My Assessment
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Aspect&lt;/th&gt;
&lt;th&gt;Rating&lt;/th&gt;
&lt;th&gt;Notes&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Technical Accuracy&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;⭐⭐⭐⭐⭐&lt;/td&gt;
&lt;td&gt;"multi-query attention" → "多查詢注意力" is spot-on&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Terminology Consistency&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;⭐⭐⭐⭐⭐&lt;/td&gt;
&lt;td&gt;Same term translated same way throughout&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Grammar &amp;amp; Flow&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;⭐⭐⭐⭐⭐&lt;/td&gt;
&lt;td&gt;Reads naturally in target language&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Format Preservation&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;⭐⭐⭐⭐⭐&lt;/td&gt;
&lt;td&gt;Keeps paragraphs, citations, structure intact&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Context Understanding&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;⭐⭐⭐⭐&lt;/td&gt;
&lt;td&gt;Gets that "ablations" means ablation studies (not medical)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Where it shines:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;✅ Technical jargon (transformers, attention mechanisms, tokens)&lt;/li&gt;
&lt;li&gt;✅ Citations format preserved: (Vaswani et al., 2017)&lt;/li&gt;
&lt;li&gt;✅ Numbers and variables unchanged: 8192, 7B, num_kv_heads&lt;/li&gt;
&lt;li&gt;✅ Academic tone maintained&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Minor quirks:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;⚠️ Sometimes literal translation where paraphrase would be smoother&lt;/li&gt;
&lt;li&gt;⚠️ Very occasional wrong word choice (maybe 1-2 per page)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Compared to:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;DeepL:&lt;/strong&gt; Better for general text, but struggles with ML terminology&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Google Translate:&lt;/strong&gt; Faster, but often mistranslates domain terms&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;GPT-4/Claude API:&lt;/strong&gt; Similar quality, but costs $0.01-0.02 per page&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Human translator:&lt;/strong&gt; Obviously better, but $$$$ and slow&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For &lt;strong&gt;free academic translation&lt;/strong&gt;, this is &lt;strong&gt;unbeatable&lt;/strong&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  ⚡ Performance &amp;amp; Cost: The Real Numbers
&lt;/h2&gt;

&lt;p&gt;Let me share actual benchmarks from my testing:&lt;/p&gt;

&lt;h3&gt;
  
  
  My Setup
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Platform:&lt;/strong&gt; Google Colab Free Tier&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;GPU:&lt;/strong&gt; Tesla T4 (15GB VRAM)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Model:&lt;/strong&gt; TranslateGemma 4B (~8.6GB)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Test paper:&lt;/strong&gt; Gemma Report (arXiv:2403.08295)&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Timing Breakdown
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Operation&lt;/th&gt;
&lt;th&gt;First Run&lt;/th&gt;
&lt;th&gt;Subsequent Runs&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Model download&lt;/td&gt;
&lt;td&gt;~5 min (one-time)&lt;/td&gt;
&lt;td&gt;-&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Model loading&lt;/td&gt;
&lt;td&gt;37.8 sec&lt;/td&gt;
&lt;td&gt;30 sec (cached)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Translation&lt;/td&gt;
&lt;td&gt;165-170 sec/page&lt;/td&gt;
&lt;td&gt;Same&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;HTML generation&lt;/td&gt;
&lt;td&gt;&amp;lt;1 sec&lt;/td&gt;
&lt;td&gt;&amp;lt;1 sec&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Total for 3 pages:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;First ever run: ~15 minutes (including model download)&lt;/li&gt;
&lt;li&gt;After model cached: ~9 minutes (just translation time)&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  GPU Usage
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;📊 GPU Memory:
   Total: 15.0 GB
   Model: ~8.6 GB
   Working: ~1.2 GB
   Available: ~5.2 GB

📊 Utilization:
   During translation: 95-100%
   Idle: 0%
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The T4 is fully utilized during translation — that's why it's relatively fast.&lt;/p&gt;

&lt;h3&gt;
  
  
  Cost Comparison (10-page paper)
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Method&lt;/th&gt;
&lt;th&gt;Time&lt;/th&gt;
&lt;th&gt;Cost&lt;/th&gt;
&lt;th&gt;Quality&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;TranslateGemma + Colab&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;~30 min&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;$0.00&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;⭐⭐⭐⭐⭐&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Claude 3.5 API&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;~2 min&lt;/td&gt;
&lt;td&gt;$0.10&lt;/td&gt;
&lt;td&gt;⭐⭐⭐⭐&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;DeepL Pro API&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;~1 min&lt;/td&gt;
&lt;td&gt;$0.20&lt;/td&gt;
&lt;td&gt;⭐⭐⭐⭐&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Google Translate&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Instant&lt;/td&gt;
&lt;td&gt;$0.00&lt;/td&gt;
&lt;td&gt;⭐⭐⭐&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Human translator&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;2-3 days&lt;/td&gt;
&lt;td&gt;$50-200&lt;/td&gt;
&lt;td&gt;⭐⭐⭐⭐⭐&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;My take:&lt;/strong&gt; If you're reading 5-10 papers per week, the &lt;strong&gt;time investment&lt;/strong&gt; of TranslateGemma pays off in &lt;strong&gt;quality + zero cost&lt;/strong&gt;. For one-off urgent translations, APIs are faster.&lt;/p&gt;




&lt;h2&gt;
  
  
  🛠️ Power User Tips
&lt;/h2&gt;

&lt;p&gt;Once you've got the basics down, here are some pro moves:&lt;/p&gt;

&lt;h3&gt;
  
  
  Tip 1: Batch Translate Strategically
&lt;/h3&gt;

&lt;p&gt;Don't translate entire papers blindly. Use this approach:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;SECTIONS&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;abstract&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;      &lt;span class="c1"&gt;# Quick scan: worth deep reading?
&lt;/span&gt;    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;intro&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;         &lt;span class="c1"&gt;# Context and motivation
&lt;/span&gt;    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;conclusion&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;15&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;16&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;  &lt;span class="c1"&gt;# Main takeaways
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Read these first (10 min translation). If it's relevant, come back for:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;SECTIONS&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;method&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;results&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;11&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;14&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Why?&lt;/strong&gt; You'll save time on papers that aren't relevant to your work.&lt;/p&gt;




&lt;h3&gt;
  
  
  Tip 2: Translate to Multiple Languages
&lt;/h3&gt;

&lt;p&gt;Learning Japanese and Chinese? Do this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;lang&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;zh-TW&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;ja&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;]:&lt;/span&gt;
    &lt;span class="n"&gt;TARGET_LANG&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;lang&lt;/span&gt;
    &lt;span class="c1"&gt;# Run translation
&lt;/span&gt;    &lt;span class="c1"&gt;# Generate HTML
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now you have &lt;strong&gt;3 versions&lt;/strong&gt; to compare:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Original English&lt;/li&gt;
&lt;li&gt;Traditional Chinese&lt;/li&gt;
&lt;li&gt;Japanese&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Great for building technical vocabulary across languages.&lt;/p&gt;




&lt;h3&gt;
  
  
  Tip 3: Fix the "Pages 2-3 Didn't Translate" Bug
&lt;/h3&gt;

&lt;p&gt;If you're using an older version, pages with lots of charts/tables might fail to translate (they just return the original text).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;We fixed this recently!&lt;/strong&gt; Update to latest:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;cd &lt;/span&gt;trans-gemma &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; git pull
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;What we changed:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Switched from complex chat template to &lt;strong&gt;simple direct prompt&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;More robust extraction logic&lt;/li&gt;
&lt;li&gt;Better handling of mixed-content pages (text + figures)&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  Tip 4: Run Locally If You Have GPU
&lt;/h3&gt;

&lt;p&gt;Don't want to depend on Colab quotas? Run locally:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git clone https://github.com/jimmyliao/trans-gemma.git
&lt;span class="nb"&gt;cd &lt;/span&gt;trans-gemma
pip &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-e&lt;/span&gt; &lt;span class="s2"&gt;".[examples]"&lt;/span&gt;

&lt;span class="c"&gt;# Open notebook&lt;/span&gt;
jupyter notebook arxiv-reader.ipynb
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The notebook &lt;strong&gt;auto-detects&lt;/strong&gt; your environment (Colab vs Local) and adapts. Just works.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Requirements:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Python 3.10+&lt;/li&gt;
&lt;li&gt;NVIDIA GPU with 10GB+ VRAM (or use CPU, but very slow)&lt;/li&gt;
&lt;li&gt;~15GB disk space for model&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  Tip 5: Customize the HTML Output
&lt;/h3&gt;

&lt;p&gt;The generated HTML uses &lt;strong&gt;vanilla JavaScript&lt;/strong&gt; and can be easily customized. Open the notebook cell that generates HTML and modify:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Change color scheme:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="nc"&gt;.header&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;background&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;linear-gradient&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;135deg&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;#667eea&lt;/span&gt; &lt;span class="m"&gt;0%&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;#764ba2&lt;/span&gt; &lt;span class="m"&gt;100%&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Add dark mode:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="k"&gt;@media&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;prefers-color-scheme&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;dark&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nt"&gt;body&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nl"&gt;background&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;#1a1a1a&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nl"&gt;color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;#e0e0e0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Adjust layout ratio:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="nc"&gt;.columns&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="py"&gt;grid-template-columns&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;45%&lt;/span&gt; &lt;span class="m"&gt;55%&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="c"&gt;/* Favor translation side */&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  🤔 Common Questions
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Q: "Colab says GPU unavailable?"
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;A:&lt;/strong&gt; Free tier has daily quotas (typically refreshes every 12-24 hours). Try:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Wait a few hours&lt;/strong&gt; and retry&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Try off-peak times&lt;/strong&gt; (evenings/weekends in US timezones)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Switch Google accounts&lt;/strong&gt; if you have multiple&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Upgrade to Colab Pro&lt;/strong&gt; ($10/month) for guaranteed GPU&lt;/li&gt;
&lt;/ol&gt;




&lt;h3&gt;
  
  
  Q: "Model download stuck at 45%?"
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;A:&lt;/strong&gt; Network hiccups happen. Try:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Restart runtime:&lt;/strong&gt; Runtime → Restart runtime&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Clear outputs:&lt;/strong&gt; Edit → Clear all outputs&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Re-run from Step 5:&lt;/strong&gt; Model downloads resume where they left off&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;If still stuck after 15 minutes, it's likely a HuggingFace server issue. Wait 30 min and retry.&lt;/p&gt;




&lt;h3&gt;
  
  
  Q: "Translation has simplified + traditional Chinese mixed?"
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;A:&lt;/strong&gt; This &lt;strong&gt;should be fixed&lt;/strong&gt; in latest version. We added &lt;code&gt;opencc-python-reimplemented&lt;/code&gt; to backend.&lt;/p&gt;

&lt;p&gt;If still happening:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;cd &lt;/span&gt;trans-gemma &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; git pull
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then restart notebook.&lt;/p&gt;




&lt;h3&gt;
  
  
  Q: "Can I translate non-arXiv PDFs?"
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;A:&lt;/strong&gt; The current notebook is optimized for arXiv URLs. For local PDFs, modify:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="c1"&gt;# Instead of:
&lt;/span&gt;&lt;span class="n"&gt;pdf_path&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;total&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;download_arxiv&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;ARXIV_ID&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="c1"&gt;# Use:
&lt;/span&gt;&lt;span class="n"&gt;pdf_path&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;/content/your_paper.pdf&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
&lt;span class="n"&gt;total&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;len&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;fitz&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;open&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;pdf_path&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then run translation cells as normal.&lt;/p&gt;




&lt;h3&gt;
  
  
  Q: "Is this safe for commercial use?"
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;A:&lt;/strong&gt; Tricky question:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Code (MIT license):&lt;/strong&gt; Yes, use commercially&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Gemma model:&lt;/strong&gt; Read &lt;a href="https://ai.google.dev/gemma/terms" rel="noopener noreferrer"&gt;Terms of Use&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Colab:&lt;/strong&gt; Free tier meant for learning/research&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;My advice:&lt;/strong&gt; Use for research/learning. If you're making money from translations, consider:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Running on your own GPU&lt;/li&gt;
&lt;li&gt;Using Colab Pro (legitimized commercial use)&lt;/li&gt;
&lt;li&gt;Checking Gemma's commercial terms carefully&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🧠 How This Actually Works (For the Curious)
&lt;/h2&gt;

&lt;p&gt;Let me pull back the curtain on the technical implementation.&lt;/p&gt;

&lt;h3&gt;
  
  
  Architecture Overview
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;┌──────────────┐
│   User       │
│  (Browser)   │
└──────┬───────┘
       │ 1. Click Colab link
       ▼
┌──────────────────────────────────┐
│   Colab Notebook                 │
│   ┌──────────────────────────┐   │
│   │ Environment Detection    │   │
│   └──────────┬───────────────┘   │
│              │ 2. Auto-config    │
│              ▼                    │
│   ┌──────────────────────────┐   │
│   │ Download arXiv PDF       │   │
│   │ (via urllib)             │   │
│   └──────────┬───────────────┘   │
│              │ 3. Extract text   │
│              ▼                    │
│   ┌──────────────────────────┐   │
│   │ PyMuPDF (page-by-page)   │   │
│   └──────────┬───────────────┘   │
│              │ 4. Send to model  │
│              ▼                    │
│   ┌──────────────────────────┐   │
│   │ TranslateGemma 4B        │◄──┼─ HuggingFace Hub
│   │ (on T4 GPU)              │   │   (model download)
│   └──────────┬───────────────┘   │
│              │ 5. Post-process   │
│              ▼                    │
│   ┌──────────────────────────┐   │
│   │ OpenCC (if zh-TW)        │   │
│   └──────────┬───────────────┘   │
│              │ 6. Generate HTML  │
│              ▼                    │
│   ┌──────────────────────────┐   │
│   │ Bilingual HTML           │   │
│   │ (side-by-side layout)    │   │
│   └──────────┬───────────────┘   │
│              │ 7. Download       │
└──────────────┼───────────────────┘
               ▼
       ┌───────────────┐
       │  User's PC    │
       │  (HTML file)  │
       └───────────────┘
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Key Technical Decisions
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;1. Simple Prompt Over Chat Template&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Initially, we used HuggingFace's &lt;code&gt;apply_chat_template()&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="c1"&gt;# Old approach (failed on pages with tables/math)
&lt;/span&gt;&lt;span class="n"&gt;messages&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[{&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;role&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;user&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;content&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;type&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;text&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;text&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;text&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;...}]&lt;/span&gt;
&lt;span class="p"&gt;}]&lt;/span&gt;
&lt;span class="n"&gt;inputs&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;tokenizer&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;apply_chat_template&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;messages&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;...)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Problem:&lt;/strong&gt; Pages with heavy formatting confused the template, and extraction logic failed.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Fix:&lt;/strong&gt; Switched to dead-simple prompt:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="c1"&gt;# New approach (rock solid)
&lt;/span&gt;&lt;span class="n"&gt;prompt&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"""&lt;/span&gt;&lt;span class="s"&gt;Translate the following text from &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;source_lang&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt; to Traditional Chinese (Taiwan, 繁體中文). Only output the translation, do not include explanations:

&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;text&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt;

Translation:&lt;/span&gt;&lt;span class="sh"&gt;"""&lt;/span&gt;

&lt;span class="n"&gt;inputs&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;tokenizer&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;prompt&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;return_tensors&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;pt&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Result:&lt;/strong&gt; 100% success rate across all page types.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;2. OpenCC Post-Processing&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;TranslateGemma 4B tends to output &lt;strong&gt;Simplified Chinese&lt;/strong&gt; by default, even when asked for Traditional.&lt;/p&gt;

&lt;p&gt;Solution: &lt;strong&gt;Always post-process&lt;/strong&gt; for zh-TW:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;target_lang&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;zh-TW&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;opencc&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;OpenCC&lt;/span&gt;
    &lt;span class="n"&gt;cc&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;OpenCC&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;s2twp&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;  &lt;span class="c1"&gt;# Simplified → Traditional (Taiwan phrases)
&lt;/span&gt;    &lt;span class="n"&gt;translation&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;cc&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;convert&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;translation&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This ensures:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;基于 → 基於&lt;/li&gt;
&lt;li&gt;轻量级 → 輕量級&lt;/li&gt;
&lt;li&gt;这些 → 這些&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Taiwan readers notice these details!&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;3. Dynamic Environment Detection&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Same notebook runs on Colab, GCP, or local Jupyter:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;detect_environment&lt;/span&gt;&lt;span class="p"&gt;():&lt;/span&gt;
    &lt;span class="k"&gt;try&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;google.colab&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;colab&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;
    &lt;span class="k"&gt;except&lt;/span&gt; &lt;span class="nb"&gt;ImportError&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="k"&gt;pass&lt;/span&gt;

    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;os&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;path&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;exists&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;/opt/conda/envs/py310&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;gcp&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;

    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;local&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;ENV&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;colab&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="c1"&gt;# Lightweight installs
&lt;/span&gt;&lt;span class="k"&gt;elif&lt;/span&gt; &lt;span class="n"&gt;ENV&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;gcp&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="c1"&gt;# Custom runtime configs
&lt;/span&gt;&lt;span class="k"&gt;else&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="c1"&gt;# Local includes PyTorch
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Why?&lt;/strong&gt; Colab has PyTorch pre-installed; local doesn't. One notebook, zero friction.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;4. Progressive HTML Generation&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Instead of loading entire paper at once, the HTML uses:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// Page navigation with keyboard shortcuts&lt;/span&gt;
&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;currentPage&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;showPage&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;n&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nb"&gt;document&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;querySelectorAll&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;.page&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;forEach&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;p&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;p&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;style&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;display&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;none&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="nb"&gt;document&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;getElementById&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;`page-&lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;n&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;`&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nx"&gt;style&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;display&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;block&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nx"&gt;currentPage&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;n&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="nb"&gt;document&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;addEventListener&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;keydown&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;e&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;e&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;key&lt;/span&gt; &lt;span class="o"&gt;===&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;ArrowLeft&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="nf"&gt;showPage&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;currentPage&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;e&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;key&lt;/span&gt; &lt;span class="o"&gt;===&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;ArrowRight&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="nf"&gt;showPage&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;currentPage&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Benefit:&lt;/strong&gt; Even 50-page papers load instantly in browser.&lt;/p&gt;




&lt;h2&gt;
  
  
  🎯 Who This Is (and Isn't) For
&lt;/h2&gt;

&lt;h3&gt;
  
  
  ✅ Perfect For:
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Graduate Students&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Reading 5-10 papers per week&lt;/li&gt;
&lt;li&gt;Budget: $0&lt;/li&gt;
&lt;li&gt;Time: Can wait 3 min/page for quality translations&lt;/li&gt;
&lt;li&gt;Bonus: Learn English terminology via side-by-side reading&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Non-native English Researchers&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Deep-reading important papers&lt;/li&gt;
&lt;li&gt;Want to &lt;strong&gt;understand&lt;/strong&gt;, not just skim&lt;/li&gt;
&lt;li&gt;Appreciate bilingual layout for learning&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;AI/ML Engineers Keeping Current&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Track latest arXiv preprints&lt;/li&gt;
&lt;li&gt;Translate abstract + intro first, decide if worth full read&lt;/li&gt;
&lt;li&gt;Free tier is plenty for 2-3 papers daily&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  ❌ Not Ideal For:
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Urgent Deadlines&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;If you need a paper translated in 5 minutes, use Claude/GPT-4 API&lt;/li&gt;
&lt;li&gt;They're faster (~10 sec/page), just costs $0.01-0.02 per page&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Large-Scale Translation&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Translating 100 papers → you'll hit Colab quotas&lt;/li&gt;
&lt;li&gt;Consider running on your own GPU or cloud instance&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Commercial Translation Services&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Check Gemma Terms of Use carefully&lt;/li&gt;
&lt;li&gt;May need different licensing&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🔮 What's Next for This Project
&lt;/h2&gt;

&lt;p&gt;I'm actively developing this, and here's what's coming:&lt;/p&gt;

&lt;h3&gt;
  
  
  Short-term (Next Month)
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;🔜 &lt;strong&gt;Auto-language detection&lt;/strong&gt; from paper metadata&lt;/li&gt;
&lt;li&gt;🔜 &lt;strong&gt;DOCX/Markdown output&lt;/strong&gt; formats (not just HTML)&lt;/li&gt;
&lt;li&gt;🔜 &lt;strong&gt;Batch mode:&lt;/strong&gt; Translate multiple papers in one go&lt;/li&gt;
&lt;li&gt;🔜 &lt;strong&gt;Dark mode&lt;/strong&gt; for HTML output&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Medium-term (Next Quarter)
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;🔜 &lt;strong&gt;Gemma 2/3 support&lt;/strong&gt; when released&lt;/li&gt;
&lt;li&gt;🔜 &lt;strong&gt;Terminology glossary&lt;/strong&gt; extraction (build your own vocab list)&lt;/li&gt;
&lt;li&gt;🔜 &lt;strong&gt;Figure/table captions&lt;/strong&gt; translation&lt;/li&gt;
&lt;li&gt;🔜 &lt;strong&gt;API mode&lt;/strong&gt; for programmatic access&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Long-term (This Year)
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;🔜 &lt;strong&gt;Web UI&lt;/strong&gt; (no notebook required)&lt;/li&gt;
&lt;li&gt;🔜 &lt;strong&gt;Mobile app&lt;/strong&gt; for reading on-the-go&lt;/li&gt;
&lt;li&gt;🔜 &lt;strong&gt;Community translations&lt;/strong&gt; (share &amp;amp; reuse)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Want to contribute? &lt;strong&gt;Pull requests welcome!&lt;/strong&gt; → &lt;a href="https://github.com/jimmyliao/trans-gemma" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  🚀 Your Turn: Translate Your First Paper
&lt;/h2&gt;

&lt;p&gt;Alright, you've read 3000+ words about this. Time to actually try it.&lt;/p&gt;

&lt;h3&gt;
  
  
  5-Minute Challenge:
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Pick a paper:&lt;/strong&gt; Go to &lt;a href="https://arxiv.org" rel="noopener noreferrer"&gt;arXiv.org&lt;/a&gt;, find something interesting&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Copy the ID:&lt;/strong&gt; It looks like &lt;code&gt;2403.08295&lt;/code&gt; (from URL)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Click this badge:&lt;/strong&gt; &lt;a href="https://colab.research.google.com/github/jimmyliao/trans-gemma/blob/main/arxiv-reader.ipynb" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcolab.research.google.com%2Fassets%2Fcolab-badge.svg" alt="Open In Colab" width="117" height="20"&gt;&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Enable T4 GPU:&lt;/strong&gt; Runtime → Change runtime type → T4 GPU&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Run all cells:&lt;/strong&gt; Runtime → Run all (or Ctrl+F9)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Wait ~10 minutes&lt;/strong&gt; (first run includes model download)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Download the HTML&lt;/strong&gt; and open in browser&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Boom.&lt;/strong&gt; You just translated an academic paper for free.&lt;/p&gt;




&lt;h2&gt;
  
  
  💬 Let's Make This Better Together
&lt;/h2&gt;

&lt;p&gt;I built this because I was frustrated with copy-pasting papers into translators. It solved &lt;strong&gt;my problem&lt;/strong&gt;. Now I'm sharing it with you.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;If this helped you:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;⭐ &lt;strong&gt;Star the repo:&lt;/strong&gt; &lt;a href="https://github.com/jimmyliao/trans-gemma" rel="noopener noreferrer"&gt;github.com/jimmyliao/trans-gemma&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;🐛 &lt;strong&gt;Report bugs:&lt;/strong&gt; &lt;a href="https://github.com/jimmyliao/trans-gemma/issues" rel="noopener noreferrer"&gt;Open an issue&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;💡 &lt;strong&gt;Share ideas:&lt;/strong&gt; &lt;a href="https://github.com/jimmyliao/trans-gemma/discussions" rel="noopener noreferrer"&gt;Start a discussion&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;🤝 &lt;strong&gt;Contribute code:&lt;/strong&gt; Pull requests welcome!&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Follow for updates:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;🌐 &lt;strong&gt;Blog:&lt;/strong&gt; &lt;a href="https://jimmyliao.dev" rel="noopener noreferrer"&gt;jimmyliao.dev&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;🐙 &lt;strong&gt;GitHub:&lt;/strong&gt; &lt;a href="https://github.com/jimmyliao" rel="noopener noreferrer"&gt;@jimmyliao&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;🐦 &lt;strong&gt;Twitter/X:&lt;/strong&gt; &lt;a href="https://twitter.com/jimmyliao" rel="noopener noreferrer"&gt;@jimmyliao&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  📚 Resources &amp;amp; References
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Official Links
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;TranslateGemma Model:&lt;/strong&gt; &lt;a href="https://huggingface.co/google/translategemma-4b-it" rel="noopener noreferrer"&gt;https://huggingface.co/google/translategemma-4b-it&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Gemma Family:&lt;/strong&gt; &lt;a href="https://ai.google.dev/gemma" rel="noopener noreferrer"&gt;https://ai.google.dev/gemma&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;This Project:&lt;/strong&gt; &lt;a href="https://github.com/jimmyliao/trans-gemma" rel="noopener noreferrer"&gt;https://github.com/jimmyliao/trans-gemma&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Related Articles
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://dev.to/gde/open-source-open-translate-offline-translation-web-service-powered-by-translategemma-2ob2"&gt;Open Translate: Offline Translation Web Service&lt;/a&gt; by another developer&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://arxiv.org/abs/2403.08295" rel="noopener noreferrer"&gt;Gemma Technical Report&lt;/a&gt; — the paper I used for testing&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Technical References
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://pymupdf.readthedocs.io/" rel="noopener noreferrer"&gt;PyMuPDF Documentation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://huggingface.co/docs/transformers" rel="noopener noreferrer"&gt;HuggingFace Transformers&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/BYVoid/OpenCC" rel="noopener noreferrer"&gt;OpenCC Documentation&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🙏 Acknowledgments
&lt;/h2&gt;

&lt;p&gt;This project builds on incredible work by:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Google DeepMind&lt;/strong&gt; for TranslateGemma and Gemma family&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;HuggingFace&lt;/strong&gt; for making model distribution seamless&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Google Colab&lt;/strong&gt; for free GPU access&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;PyMuPDF&lt;/strong&gt; team for reliable PDF parsing&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;OpenCC&lt;/strong&gt; project for Chinese conversion&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Open source makes projects like this possible. Thank you! 🙌&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;P.S.&lt;/strong&gt; If you made it this far, you're either genuinely interested or an excellent skimmer. Either way, I appreciate you reading. Now go translate something! 📚✨&lt;/p&gt;

&lt;p&gt;Questions? Comments? Horror stories about academic translation? &lt;strong&gt;Drop them below!&lt;/strong&gt; 👇&lt;/p&gt;

</description>
      <category>translategemma</category>
      <category>gemma</category>
      <category>google</category>
      <category>ai</category>
    </item>
    <item>
      <title>Antigravity Rules &amp; Workflows Guide: AI-Powered Development Standards</title>
      <dc:creator>JimmyLiao</dc:creator>
      <pubDate>Sun, 14 Dec 2025 14:46:52 +0000</pubDate>
      <link>https://forem.com/jimmyliao/antigravity-rules-workflows-guide-ai-powered-development-standards-2ioe</link>
      <guid>https://forem.com/jimmyliao/antigravity-rules-workflows-guide-ai-powered-development-standards-2ioe</guid>
      <description>&lt;p&gt;&lt;a href="https://memo.jimmyliao.net/p/antigravity-rules-and-workflows-guide" rel="noopener noreferrer"&gt;https://memo.jimmyliao.net/p/antigravity-rules-and-workflows-guide&lt;/a&gt;&lt;/p&gt;

</description>
      <category>antigravity</category>
      <category>google</category>
      <category>aisprinth2</category>
    </item>
    <item>
      <title>Enterprise level Agentic dev workflow with Gemini CLI, ADK, and Antigravity</title>
      <dc:creator>JimmyLiao</dc:creator>
      <pubDate>Tue, 09 Dec 2025 22:14:01 +0000</pubDate>
      <link>https://forem.com/jimmyliao/enterprise-level-agentic-dev-workflow-with-gemini-cli-adk-and-antigravity-4p3p</link>
      <guid>https://forem.com/jimmyliao/enterprise-level-agentic-dev-workflow-with-gemini-cli-adk-and-antigravity-4p3p</guid>
      <description>&lt;p&gt;&lt;a href="https://memo.jimmyliao.net/p/enterprise-level-agentic-dev-workflow" rel="noopener noreferrer"&gt;https://memo.jimmyliao.net/p/enterprise-level-agentic-dev-workflow&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This is the the the speaker experience from DevFest Taichung, DevFest Taipei. You can check the online deck: &lt;/p&gt;

&lt;p&gt;&lt;a href="https://devfest2025taipei-jimmyliao.web.app/" rel="noopener noreferrer"&gt;https://devfest2025taipei-jimmyliao.web.app/&lt;/a&gt;&lt;/p&gt;

</description>
      <category>aisprinth2</category>
    </item>
    <item>
      <title>Use Gemini-CLI with Gemini-3 to add test coverage</title>
      <dc:creator>JimmyLiao</dc:creator>
      <pubDate>Tue, 18 Nov 2025 17:27:36 +0000</pubDate>
      <link>https://forem.com/jimmyliao/use-gemini-cli-with-gemini-3-to-add-test-coverage-io8</link>
      <guid>https://forem.com/jimmyliao/use-gemini-cli-with-gemini-3-to-add-test-coverage-io8</guid>
      <description>&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=SQHV2Kek5fA" rel="noopener noreferrer"&gt;https://www.youtube.com/watch?v=SQHV2Kek5fA&lt;/a&gt;&lt;/p&gt;

</description>
      <category>gemini</category>
      <category>gemini3</category>
    </item>
    <item>
      <title>Using ADK + the latest Gemini 3 Pro + Google Map to create an AI Travel Agent!</title>
      <dc:creator>JimmyLiao</dc:creator>
      <pubDate>Tue, 18 Nov 2025 17:26:18 +0000</pubDate>
      <link>https://forem.com/jimmyliao/using-adk-the-latest-gemini-3-pro-google-map-to-create-an-ai-travel-agent-58pc</link>
      <guid>https://forem.com/jimmyliao/using-adk-the-latest-gemini-3-pro-google-map-to-create-an-ai-travel-agent-58pc</guid>
      <description>&lt;p&gt;[Building an AI Travel Advisor with Gemini 3 Pro + ADK + Google Maps]&lt;/p&gt;

&lt;p&gt;&lt;a href="https://memo.jimmyliao.net/p/gemini-3-pro-gemini-cli" rel="noopener noreferrer"&gt;https://memo.jimmyliao.net/p/gemini-3-pro-gemini-cli&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Using ADK + the latest Gemini 3 Pro + Google Map to create an AI Travel Agent!&lt;/p&gt;

&lt;p&gt;Also, try on AI Studio: &lt;a href="https://goo.gle/try-gemini3" rel="noopener noreferrer"&gt;https://goo.gle/try-gemini3&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Gemini3
&lt;/h1&gt;

&lt;h1&gt;
  
  
  GDE
&lt;/h1&gt;

&lt;h1&gt;
  
  
  ADK
&lt;/h1&gt;

</description>
      <category>gemini</category>
      <category>gemini3</category>
      <category>adk</category>
    </item>
    <item>
      <title>Hands-on Test of Gemini 3 Pro - Exploration using Gemini-CLI</title>
      <dc:creator>JimmyLiao</dc:creator>
      <pubDate>Tue, 18 Nov 2025 17:24:18 +0000</pubDate>
      <link>https://forem.com/jimmyliao/hands-on-test-of-gemini-3-pro-exploration-using-gemini-cli-mk6</link>
      <guid>https://forem.com/jimmyliao/hands-on-test-of-gemini-3-pro-exploration-using-gemini-cli-mk6</guid>
      <description>&lt;p&gt;The Gemini 3 has been launched! &lt;/p&gt;

&lt;p&gt;And check it out using the Gemini-CLI! &lt;/p&gt;

&lt;p&gt;[Hands-on Test of Gemini 3 Pro - Exploration using Gemini-CLI]&lt;/p&gt;

&lt;p&gt;&lt;a href="https://memo.jimmyliao.net/p/gemini-3-pro-adk-google-maps-a" rel="noopener noreferrer"&gt;https://memo.jimmyliao.net/p/gemini-3-pro-adk-google-maps-a&lt;/a&gt;&lt;/p&gt;

</description>
      <category>gemini3</category>
      <category>gemini</category>
    </item>
    <item>
      <title>[Building an AI Travel Advisor with Gemini 3 Pro + ADK + Google Maps]
Using ADK + the latest Gemini 3 Pro + Google Map to create an AI Travel Agent!

https://memo.jimmyliao.net/p/gemini-3-pro-adk-google-maps-ai

 #Gemini3
#GDE
#ADK</title>
      <dc:creator>JimmyLiao</dc:creator>
      <pubDate>Tue, 18 Nov 2025 16:33:52 +0000</pubDate>
      <link>https://forem.com/jimmyliao/building-an-ai-travel-advisor-with-gemini-3-pro-adk-google-maps-using-adk-the-latest-198c</link>
      <guid>https://forem.com/jimmyliao/building-an-ai-travel-advisor-with-gemini-3-pro-adk-google-maps-using-adk-the-latest-198c</guid>
      <description>&lt;p&gt;

&lt;/p&gt;
&lt;div class="crayons-card c-embed text-styles text-styles--secondary"&gt;
    &lt;div class="c-embed__content"&gt;
        &lt;div class="c-embed__cover"&gt;
          &lt;a href="https://memo.jimmyliao.net/p/gemini-3-pro-adk-google-maps-ai" class="c-link align-middle" rel="noopener noreferrer"&gt;
            &lt;img alt="" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%217wBf%21%2Cw_1200%2Ch_675%2Cc_fill%2Cf_jpg%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Cg_auto%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252Fd9d33965-c32e-4013-8776-a5fdea2b0985_1080x1080.jpeg" height="auto" class="m-0"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="c-embed__body"&gt;
        &lt;h2 class="fs-xl lh-tight"&gt;
          &lt;a href="https://memo.jimmyliao.net/p/gemini-3-pro-adk-google-maps-ai" rel="noopener noreferrer" class="c-link"&gt;
            用 Gemini 3 Pro + ADK + Google Maps 打造 AI 旅遊顧問
          &lt;/a&gt;
        &lt;/h2&gt;
          &lt;p class="truncate-at-3"&gt;
            Repo 幫忙按個 Star, Fork, 跟貢獻吧！透過這個連結直接在 AI Studio 試試吧: https://goo.gle/try-gemini3
          &lt;/p&gt;
        &lt;div class="color-secondary fs-s flex items-center"&gt;
            &lt;img alt="favicon" class="c-embed__favicon m-0 mr-2 radius-0" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fsubstackcdn.com%2Ficons%2Fsubstack%2Ffavicon.ico"&gt;
          memo.jimmyliao.net
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
&lt;/div&gt;




</description>
      <category>gemini</category>
      <category>agents</category>
      <category>ai</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>The Gemini 3 has been launched! 



And check it out using the Gemini-CLI! 

[Hands-on Test of Gemini 3 Pro - Exploration using Gemini-CLI]

https://memo.jimmyliao.net/p/gemini-3-pro-gemini-cli</title>
      <dc:creator>JimmyLiao</dc:creator>
      <pubDate>Tue, 18 Nov 2025 16:32:27 +0000</pubDate>
      <link>https://forem.com/jimmyliao/the-gemini-3-has-been-launched-and-check-it-out-using-the-gemini-cli-hands-on-test-25jd</link>
      <guid>https://forem.com/jimmyliao/the-gemini-3-has-been-launched-and-check-it-out-using-the-gemini-cli-hands-on-test-25jd</guid>
      <description>&lt;div class="crayons-card c-embed text-styles text-styles--secondary"&gt;
    &lt;div class="c-embed__content"&gt;
        &lt;div class="c-embed__cover"&gt;
          &lt;a href="https://memo.jimmyliao.net/p/gemini-3-pro-gemini-cli" class="c-link align-middle" rel="noopener noreferrer"&gt;
            &lt;img alt="" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fsubstackcdn.com%2Fimage%2Ffetch%2F%24s_%21KBcT%21%2Cw_1200%2Ch_600%2Cc_fill%2Cf_jpg%2Cq_auto%3Agood%2Cfl_progressive%3Asteep%2Cg_auto%2Fhttps%253A%252F%252Fsubstack-post-media.s3.amazonaws.com%252Fpublic%252Fimages%252F1bae66b1-70e4-4e7a-b48c-b6cbc6119486_1184x864.png" height="405" class="m-0" width="800"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="c-embed__body"&gt;
        &lt;h2 class="fs-xl lh-tight"&gt;
          &lt;a href="https://memo.jimmyliao.net/p/gemini-3-pro-gemini-cli" rel="noopener noreferrer" class="c-link"&gt;
            實戰測試 Gemini 3 Pro - 使用 Gemini-CLI 探索 - by JimmyLiao(NET)
          &lt;/a&gt;
        &lt;/h2&gt;
          &lt;p class="truncate-at-3"&gt;
            透過這個連結直接在 AI Studio 試試吧: https://goo.gle/try-gemini3
          &lt;/p&gt;
        &lt;div class="color-secondary fs-s flex items-center"&gt;
            &lt;img alt="favicon" class="c-embed__favicon m-0 mr-2 radius-0" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fsubstackcdn.com%2Ficons%2Fsubstack%2Ffavicon.ico" width="32" height="32"&gt;
          memo.jimmyliao.net
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
&lt;/div&gt;


</description>
    </item>
  </channel>
</rss>
