forked from qt-creator/qt-creator
66 lines
1.4 KiB
Markdown
66 lines
1.4 KiB
Markdown
|
|
# lupdate.lua
|
||
|
|
|
||
|
|
lupdate.lua allows you to update your .ts files from your .lua files.
|
||
|
|
|
||
|
|
## Installation
|
||
|
|
|
||
|
|
You need to install lua, luarocks and luafilesystem.
|
||
|
|
|
||
|
|
On macOS:
|
||
|
|
|
||
|
|
```sh
|
||
|
|
$ brew install lua luarocks
|
||
|
|
$ luarocks install luafilesystem
|
||
|
|
```
|
||
|
|
|
||
|
|
For other platforms see: [Download luarocks](https://github.com/luarocks/luarocks/wiki/Download)
|
||
|
|
|
||
|
|
## Usage
|
||
|
|
|
||
|
|
You need to add a "languages" key to your plugin spec file.
|
||
|
|
|
||
|
|
```lua
|
||
|
|
--- In your plugin.lua file
|
||
|
|
return {
|
||
|
|
Name = "MyPlugin",
|
||
|
|
Version = "1.0.0",
|
||
|
|
languages = {"de", "fr", "en"},
|
||
|
|
--- ....
|
||
|
|
} --[[@as QtcPlugin]]
|
||
|
|
```
|
||
|
|
|
||
|
|
Then run the lupdate.lua script in your plugin directory. Make sure that lupdate is in your PATH.
|
||
|
|
|
||
|
|
```sh
|
||
|
|
$ # export PATH=$PATH:/path/to/Qt/bin
|
||
|
|
$ cd my-plugin
|
||
|
|
$ lua lupdate.lua
|
||
|
|
```
|
||
|
|
|
||
|
|
Once you have the .ts files you can use Qt Linguist to translate your strings.
|
||
|
|
|
||
|
|
After translation you can run lrelease to generate the .qm files.
|
||
|
|
|
||
|
|
```sh
|
||
|
|
$ cd ts
|
||
|
|
$ lrelease *.ts
|
||
|
|
```
|
||
|
|
|
||
|
|
## Background
|
||
|
|
|
||
|
|
Since Qt's lupdate does not currently support lua files, the lupdate.lua script uses a trick
|
||
|
|
to make it work. It creates a temporary file for each lua file and adds a comment at the start
|
||
|
|
and end of the file:
|
||
|
|
|
||
|
|
```lua
|
||
|
|
--- class Plugin { Q_OBJECT
|
||
|
|
|
||
|
|
print(tr("Hello World"))
|
||
|
|
|
||
|
|
--- }
|
||
|
|
```
|
||
|
|
|
||
|
|
That way lupdate thinks its inside a C++ Plugin and takes as context the name of the class, in this case "Plugin".
|
||
|
|
|
||
|
|
It then starts the actual lupdate tool to update the .ts files.
|