2026年01月

  • 使用 po4a 进行技术文档翻译:从入门到实践

    2026-01-23 19:23:47 363 0 技术文章

    在开源项目中,文档的多语言支持是提升项目影响力的重要环节。最近在为 Yii3 框架文档添加简体中文翻译时,我深入使用了 po4a 这个强大的翻译工具。本文将分享使用 po4a 进行技术文档翻译的完整流程和实践经验。

    什么是 po4a?

    po4a(PO for Anything)是一个基于 gettext 的文档翻译工具,最初为 Debian 项目开发,但现在已经广泛应用于各种文档翻译场景。它的核心优势在于:

    • 格式无关:支持 Markdown、POD、XML、HTML 等多种格式
    • 版本控制友好:翻译文件(.po)是纯文本,易于纳入 Git 管理
    • 增量更新:源文件更新时,自动合并已有翻译,避免重复工作
    • 团队协作:支持多人协作翻译,便于分工

    项目结构

    在开始之前,先了解典型的 po4a 项目结构:

    docs/
    ├── _translations/        # 翻译配置和 PO 文件
    │   ├── po4a.conf         # 主配置文件
    │   ├── pot/              # 模板文件(.pot)
    │   └── po/               # 翻译文件(.po)
    │       └── zh-CN/        # 简体中文翻译
    ├── src/                  # 源文件和翻译输出
    │   ├── en/               # 英文源文件
    │   └── zh-CN/            # 简体中文翻译输出
    

    这种结构将翻译工作与源文件分离,既保持了源文件的整洁,又便于管理翻译进度。

  • Docker 配置代理完整指南

    2026-01-21 17:18:48 321 0 技术文章

    背景

    在国内环境下使用 Docker 时,经常遇到拉取镜像缓慢或超时的问题。虽然可以配置镜像加速器,但随着国内镜像源的不稳定,使用代理成为了更可靠的解决方案。

    问题现象

    执行 docker builddocker pull 时出现以下错误:

    ERROR: failed to solve: DeadlineExceeded: failed to resolve source metadata for docker.io/xxx
    dial tcp xxx.xxx.xxx.xxx:443: i/o timeout
    

    核心原理

    Docker 架构分为两部分:

    • Docker Client: 命令行工具,接收用户命令
    • Docker Daemon: 后台服务,实际执行拉取镜像等操作 当我们在终端设置 export HTTP_PROXY=... 时,只影响 Docker Client,而真正需要网络访问的 Docker Daemon 并未使用代理。

    解决方案

    为 Docker Daemon 配置代理(推荐)

    1. 创建 systemd 配置目录
      sudo mkdir -p /etc/systemd/system/docker.service.d
      
    2. 创建代理配置文件
      sudo vim /etc/systemd/system/docker.service.d/http-proxy.conf
      
    3. 添加代理配置
      [Service]
      Environment="HTTP_PROXY=http://your-proxy-ip:port"
      Environment="HTTPS_PROXY=http://your-proxy-ip:port"
      Environment="NO_PROXY=localhost,127.0.0.1,*.local,registry.internal.com"
      

      配置说明:

    • HTTP_PROXY: HTTP 协议代理地址
    • HTTPS_PROXY: HTTPS 协议代理地址(Docker Hub 使用 HTTPS)
    • NO_PROXY: 不使用代理的地址列表,通常包括:
      • localhost, 127.0.0.1: 本地地址
      • *.local: 本地域名
      • 内网私有镜像仓库域名
    1. 重载配置并重启 Docker
      # 重载 systemd 配置
      sudo systemctl daemon-reload
      # 重启 Docker 服务
      sudo systemctl restart docker
      
    2. 验证配置
      # 查看 Docker 服务的环境变量
      sudo systemctl show --property=Environment docker
      

      预期输出:

      Environment=HTTP_PROXY=http://your-proxy-ip:port HTTPS_PROXY=http://your-proxy-ip:port NO_PROXY=localhost,127.0.0.1
      
    3. 测试代理连接
      # 测试是否能通过代理访问 Docker Hub
      curl -x http://your-proxy-ip:port -I https://registry-1.docker.io/v2/
      # 拉取测试镜像
      docker pull hello-world
      
  • 入职满 11 周年纪念日

    2026-01-20 10:19:14 257 0 生活随笔

    79EE5F71-BDDD.jpg

    IMG_7957.JPG