StupidBeauty
Read times:1393Posted at:Fri Feb 21 03:25:17 2014
- no title specified

Qt Linguist文档翻译:介绍、翻译者及发布管理者

内容目录

介绍

使用Qt Linguist的简明向导

发布管理器

介绍

Qt强有力地支持将应用程序的语言翻译为本地语言。这个向导说明了在翻译程序的过程中各个工作人员应该怎样使用Qt的翻译工具。此向导首先介绍一些必须考虑的内容的概览,接下来的各个章节将细致介绍不同角色及Qt提供的相应工具。

第二章:发布管理器针对负责整个程序的发布的工作人员。他/她们一般会谐调软件工程师和翻译人员的工作。这一章介绍两个工具。lupdate工具用来使源代码各翻译内容同步。lrelease工具用来创建能在运行时被已发布程序使用的翻译文件。

第三章:翻译者是为翻译人员而写的。它介绍工具Qt Linguist的使用。用户仅需要启动程序以及使用文本编辑器的能力就能使用Qt Linguist。

第四章:程序员是针对程序员的。它介绍了怎样创建能够使用翻译文件的程序。同时它提供了怎样帮助翻译人员找到短语出现的上下文的提示。这一章的三个短的教程涵盖了需要程序员去做的所有事情。

翻译过程总览

一个程序中需要翻译的大部分文本都是由单个单词或短的词组组成的。它们一般是窗口标题、菜单项、弹出的帮助文本(气球帮助)以及按钮、复选框、单选框的标签。

程序员使用一种简单而特殊的语法将需要翻译的短语写到源代码中。Qt工具将为每个短语提供上下文信息以帮助翻译人员,必要时程序员也能添加额外的上下文信息。发布管理器根据源代码产生出一组翻译文件并将它们传递给翻译人员。翻译人员使用Qt Linguist打开这些文件,输入他/她们的翻译内容并保存,再将这些文件传回给发布管理器。然后发布管理器产生出能被程序使用的经过快速压缩的翻译文件。当程序发展时,这些工具都能够重复使用,它们会保留已存在的翻译内容并且使用工作人员可以轻易辨别出哪些新的翻译项是必须的。Qt Linguist还提供一个单词本机制以保证对于多个程序和工程能进行一致的翻译工作。

由于人类语言的微妙和复杂,翻译人员和程序员必须应对一些事件:

同一个短语可能依据上下文而被翻译成不同的形式,例如,英语中的open可能是德语中的ffnen:打开文件,或德语中的aufbauen:打开到因特网的连接。

快捷键可能需要修改,但不能引起冲突,例如英语中的&Quit在挪威语中是Avslutt,而这个单词并不包含字母Q。我们不能使用一个已经在使用中的字母,除非我们修改多个快捷键。

包含变量的短语,例如“The 25 files selected will take 63 seconds to process”,其中的两个在运行时程序化地插入的数字需要特殊对待,因为在一个不同的语言中语序是不同的,加此变量的位置可能需要改变。

Qt翻译工具为这些工作提供明了而简洁的解决方案。

使用Qt Linguist的简明向导

Qt Linguist是一个用来将翻译内容添加到Qt应用程序中的工具。它引进一翻译“上下文”的理念,“上下文”是指同时在屏幕上出现的一组短语,例如出现在同一个菜单或对话框中。

运行Qt Linguist以开始使用,可以通过任务条的菜单或双击桌面图标或在命令行输入linguist(紧接着一个Enter键)以启动Qt Linguist。当Qt Linguist启动完毕后,在菜单栏单击File|Open(文件|打开),选择一个.ts翻译源文件并继续工作。

Qt Linguist的主窗口被分成四个主要区域。左手边的区域包含的是上下文列表,右边的顶部是源文件区域,右边的中部是翻译区域,右边的底部是短语和猜测区域。我们将在后面详细介绍它们。

单击上下文列表(左手边)中的一个下文条目,然后单击源文件区域(右边顶部)中的某个短语。该短语将被复制到翻译区域(右边中部)。在文本“翻译(Translation)”下方单击,并且输入翻译内容。按键Ctrl+Enter(完成并跳至下一个(Done and Next))以确认你已经完成它的翻译并且移动到下一个需要翻译的短语。

你可以重复地这么干:输入翻译文本,然后按Ctrl+Enter。直到所有翻译都已完成或者你已完成该会话。Linguist会尝试利用任何开放的短语词库以及以前的翻译来在“短语及猜测(phrases and guesses)”区域填充上可能的翻译内容。每一条都有一个快捷键,例如:Ctrl+1、Ctrl+2等等,你可以使用这些快捷键将这些猜测内容复制到翻译区域。(喜欢用鼠标的人可以双击一条短语或猜测项以将它移到翻译区域。)在会话的最后从菜单栏中选择文件|保存(File|Save),然后选择文件|退出(File|Exit)以退出。

Qt Linguist的主窗口

上下文列表

默认情况下此部件位于主窗口的左手边。待续。

发布管理器

有两个工具是提供给发布管理者的,它们是lupdate和lrelease。这些工具依赖于qmake项目文件,尽管你不必使用qmake。

第三个工具,qm2ts,可以用来将Qt 2.x信息文件转换成.ts文件。

Qt项目文件

lupdate和lrelease依赖于应用程序的.pro即Qt项目文件所提供的信息。在项目文件的TRANSLATIONS区域中必须针对每种附加语言包含一个条目。一个标准的条目看起来是这样的:

TRANSLATIONS = tt2_fr.ts \

tt2_nl.ts

在翻译文件的文件名中使用地名对于在运行的时候决定所要装载的语言很有用。我们将在第四章:程序员中解释这一点。

一个包含四种语言的完整.pro文件示例:

HEADERS =main-dlg.h\

options-dlg.h

SOURCES =main-dlg.cpp\

options-dlg.cpp\

main.cpp

FORMS =search-dlg.ui

TRANSLATIONS =superapp_dk.ts\

superapp_fi.ts\

superapp_no.ts\

superapp_se.ts

QTextCodec::setCodecForTr()使得程序员能够为tr()调用中出现的文本串选择8位的编码。这对于使用像汉语和日语这样的语言的程序来说很有用。如果没有设置编码,则tr()使用Latin-1字符集。

如果你在程序中使用QTextCodec::codecForTr()机制的话,那么Qt Linguist还需要你在.pro文件中设置DEFAULTCODEC条目。例如:

DEFAULTCODEC =ISO-8859-5

lupdate

用法:lupdate myproject.pro

这是一个简单的命令行工具。lupdate读入一个Qt .pro文件,找到指定源文件、头文件和Qt设计器设计的界面文件中可以翻译的字符串,并且生成获更新项目文件中列出的.ts翻译文件。这些翻译文件将被交给翻译者,而翻译者使用Qt Linguist阅读这些文件并且写入翻译文本。

拥有自己的翻译者的公司可能会发现,在开发程序的过程中经常运行lupdate,例如每月一次,是很有用处的。这将会使翻译所需的文件数保持很小,还能让一个翻译者同时为数个项目作支持。

雇用翻译员的公司可能更喜欢仅在程序的生命周期运行lupdate几次,而且可能就在程序开始第一次测试之前就运行一次。这会使翻译者只需做一次性的工作,而且翻译者发现的任何漏洞都能与在初始测试中发现的漏洞包含在一起。第二次及后续的lupdate的运行可能是在最后测试的过程中。

.ts文件格式是一种简单的符合人类阅读习惯的XML格式,这种文件可用于版本控制系统。

lrelease

用法:lrelease myproject.pro

这是又一个简单的命令行工具。它读取一个Qt.pro文件并且针对项目文件中列出的每一个.ts翻译源文件产生出被程序使用的.qm文件。.qm文件是一种压缩的二进制文件,能够为翻译内容提供特别快速的查询。

无论何时,当程序的一个版本将要被发布时,此工具被运行,从程序的最初测试版本一直到最终的发布版本。如果.qm文件没有被创建,例如,在着手进行任何翻译之前需要创建一个测试版本,那么程序会使用程序员放置在源代码中的文本完美地运行。一旦.qm文件是可获取的,那么程序会自动地探测到并且应用它们。

注意lrelease只会合并那些被标记为“完成”的翻译项。如果一个翻译项丢失或是无效,那么将被原始文本代替。

丢失的翻译项

lupdate和lrelease都能应用于不完整的.ts翻译文件。在运行时,丢失的翻译项会被原始语言的短语代替。

章泽天

Your opinions
Your name:Email:Website url:Opinion content: