200 lines
4.6 KiB
Plaintext
200 lines
4.6 KiB
Plaintext
meta:
|
|
id: qm
|
|
title: Compiled Qt translations
|
|
application: Qt
|
|
file-extension: qm
|
|
license: GPL-3.0-or-later
|
|
encoding: utf-8
|
|
endian: be
|
|
seq:
|
|
- id: magic
|
|
contents: [0x3C, 0xB8, 0x64, 0x18,
|
|
0xCA, 0xEF, 0x9C, 0x95,
|
|
0xCD, 0x21, 0x1C, 0xBF,
|
|
0x60, 0xA1, 0xBD, 0xDD]
|
|
- id: blocks
|
|
type: block
|
|
repeat: eos
|
|
types:
|
|
block:
|
|
-webide-representation: '{tag}'
|
|
seq:
|
|
- id: tag
|
|
type: u1
|
|
enum: block_tag
|
|
- id: length
|
|
type: u4
|
|
- id: contents
|
|
type:
|
|
switch-on: tag
|
|
cases:
|
|
'block_tag::contexts': contexts
|
|
'block_tag::hashes': hashes
|
|
'block_tag::messages': messages
|
|
'block_tag::numerus_rules': numerus_rules
|
|
'block_tag::dependencies': dependencies
|
|
'block_tag::language': language
|
|
size: length
|
|
contexts:
|
|
seq:
|
|
- id: length
|
|
type: u2
|
|
- id: offsets
|
|
type: u2
|
|
repeat: expr
|
|
repeat-expr: length
|
|
- id: contexts
|
|
type: context
|
|
repeat: eos
|
|
types:
|
|
context:
|
|
-webide-representation: '{context}'
|
|
seq:
|
|
- id: length
|
|
type: u1
|
|
- id: context
|
|
type: str
|
|
size: length
|
|
- type: u1
|
|
if: length % 2 == 0
|
|
hashes:
|
|
seq:
|
|
- id: hashes
|
|
type: hash
|
|
repeat: eos
|
|
types:
|
|
hash:
|
|
-webide-representation: '{hash}'
|
|
seq:
|
|
- id: hash
|
|
type: u4
|
|
- id: offset
|
|
type: u4
|
|
messages:
|
|
seq:
|
|
- id: messages
|
|
type: message
|
|
repeat: eos
|
|
types:
|
|
message:
|
|
seq:
|
|
- id: attributes
|
|
type: attribute
|
|
repeat: until
|
|
repeat-until: '_.tag == attribute_tag::end'
|
|
attribute:
|
|
-webide-representation: '{tag}'
|
|
seq:
|
|
- id: tag
|
|
type: u1
|
|
enum: attribute_tag
|
|
- id: contents
|
|
type:
|
|
switch-on: tag
|
|
cases:
|
|
'attribute_tag::end': end
|
|
'attribute_tag::source_text_utf16': utf16string
|
|
'attribute_tag::translation': utf16string
|
|
'attribute_tag::context_utf16': utf16string
|
|
'attribute_tag::hash': hash
|
|
'attribute_tag::source_text': string
|
|
'attribute_tag::context': string
|
|
'attribute_tag::comment': string
|
|
'attribute_tag::obsolete_2': obsolete_2
|
|
types:
|
|
end: {}
|
|
utf16string:
|
|
-webide-representation: '{text}'
|
|
seq:
|
|
- id: length
|
|
type: s4
|
|
- id: text
|
|
type: str
|
|
encoding: utf-16be
|
|
size: length
|
|
string:
|
|
-webide-representation: '{text}'
|
|
seq:
|
|
- id: length
|
|
type: u4
|
|
- id: text
|
|
type: str
|
|
size: length
|
|
hash:
|
|
-webide-representation: '{hash}'
|
|
seq:
|
|
- id: hash
|
|
type: u4
|
|
obsolete_2:
|
|
-webide-representation: '{unknown_byte}'
|
|
seq:
|
|
- id: unknown_byte
|
|
type: u1
|
|
numerus_rules:
|
|
seq:
|
|
- id: components
|
|
type: component
|
|
repeat: eos
|
|
types:
|
|
component:
|
|
-webide-representation: '{operator}'
|
|
seq:
|
|
- id: component
|
|
type: u1
|
|
- id: param1
|
|
type: u1
|
|
if: operator.to_i <= 0x04
|
|
- id: param2
|
|
type: u1
|
|
if: operator == operator::between
|
|
instances:
|
|
is_arithmetic:
|
|
value: component & 0x80 != 0x80
|
|
not:
|
|
value: is_arithmetic and component & 0x08 == 0x08
|
|
mod10:
|
|
value: is_arithmetic and component & 0x10 == 0x10
|
|
mod100:
|
|
value: is_arithmetic and component & 0x20 == 0x20
|
|
leading1000:
|
|
value: is_arithmetic and component & 0x40 == 0x40
|
|
operator:
|
|
value: is_arithmetic ? component & 0b111 : component
|
|
enum: operator
|
|
enums:
|
|
operator:
|
|
0x01: equality
|
|
0x02: less_than
|
|
0x03: less_or_equal
|
|
0x04: between
|
|
0xfd: and
|
|
0xfe: or
|
|
0xff: new_rule
|
|
dependencies:
|
|
seq:
|
|
- id: dependencies
|
|
type: strz
|
|
repeat: eos
|
|
language:
|
|
-webide-representation: '{language}'
|
|
seq:
|
|
- id: language
|
|
type: strz
|
|
enums:
|
|
block_tag:
|
|
0x2F: contexts
|
|
0x42: hashes
|
|
0x69: messages
|
|
0x88: numerus_rules
|
|
0x96: dependencies
|
|
0xa7: language
|
|
attribute_tag:
|
|
1: end
|
|
2: source_text_utf16
|
|
3: translation
|
|
4: context_utf16
|
|
5: hash
|
|
6: source_text
|
|
7: context
|
|
8: comment
|
|
9: obsolete_2 |