Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
C
converse.js
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
nexedi
converse.js
Commits
f02f470e
Commit
f02f470e
authored
Nov 27, 2015
by
Weblate
Browse files
Options
Browse Files
Download
Plain Diff
Merge remote-tracking branch 'origin/master'
parents
3be192b7
223d6d87
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
55 additions
and
11 deletions
+55
-11
weblate/trans/formats.py
weblate/trans/formats.py
+39
-4
weblate/trans/models/translation.py
weblate/trans/models/translation.py
+4
-6
weblate/trans/tests/data/cs.po
weblate/trans/tests/data/cs.po
+2
-1
weblate/trans/tests/test_files.py
weblate/trans/tests/test_files.py
+10
-0
No files found.
weblate/trans/formats.py
View file @
f02f470e
...
...
@@ -27,6 +27,7 @@ from translate.storage.properties import propunit, propfile
from
translate.storage.xliff
import
xliffunit
,
xlifffile
,
ID_SEPARATOR
from
translate.storage.po
import
pounit
,
pofile
from
translate.storage.poheader
import
default_header
from
translate.storage.php
import
phpunit
from
translate.storage.ts2
import
tsunit
,
tsfile
from
translate.storage
import
mo
...
...
@@ -729,7 +730,7 @@ class FileFormat(object):
with
open
(
filename
,
'w'
)
as
output
:
output
.
write
(
cls
.
new_translation
)
def
iterate_merge
(
self
,
fuzzy
,
header
=
False
):
def
iterate_merge
(
self
,
fuzzy
):
"""Iterates over units for merging.
Note: This can change fuzzy state of units!
...
...
@@ -737,8 +738,6 @@ class FileFormat(object):
for
unit
in
self
.
all_units
():
# Handle header
if
unit
.
unit
and
unit
.
unit
.
isheader
():
if
header
:
yield
False
,
unit
continue
# Skip fuzzy (if asked for that)
...
...
@@ -757,6 +756,11 @@ class FileFormat(object):
yield
set_fuzzy
,
unit
def
merge_header
(
self
,
otherstore
):
"""Tries to merge headers"""
raise
Exception
(
'x'
)
return
@
register_fileformat
class
AutoFormat
(
FileFormat
):
...
...
@@ -769,7 +773,10 @@ class AutoFormat(FileFormat):
First attempt own autodetection, then fallback to ttkit.
"""
filename
=
getattr
(
storefile
,
'name'
,
None
)
if
hasattr
(
storefile
,
'read'
):
filename
=
getattr
(
storefile
,
'name'
,
None
)
else
:
filename
=
storefile
if
filename
is
not
None
:
name
=
os
.
path
.
basename
(
filename
)
for
autoload
,
storeclass
in
FILE_DETECT
:
...
...
@@ -893,6 +900,34 @@ class PoFormat(FileFormat):
if
retcode
:
raise
ValueError
(
output_err
if
output_err
else
output
)
def
merge_header
(
self
,
otherstore
):
"""Tries to merge headers"""
values
=
otherstore
.
store
.
parseheader
()
skip_list
=
(
'Plural-Forms'
,
'Content-Type'
,
'Content-Transfer-Encoding'
,
'MIME-Version'
,
'Language'
,
)
update
=
{}
for
key
in
values
:
if
key
in
skip_list
:
continue
if
values
[
key
]
==
default_header
.
get
(
key
,
None
):
continue
update
[
key
]
=
values
[
key
]
self
.
store
.
updateheader
(
**
update
)
header
=
self
.
store
.
header
()
newheader
=
otherstore
.
store
.
header
()
if
not
header
or
not
newheader
:
return
header
.
removenotes
()
header
.
addnote
(
newheader
.
getnotes
())
@
register_fileformat
class
PoMonoFormat
(
PoFormat
):
...
...
weblate/trans/models/translation.py
View file @
f02f470e
...
...
@@ -1092,12 +1092,10 @@ class Translation(models.Model, URLMixin, PercentMixin, LoggerMixin):
store1
=
self
.
store
.
store
store1
.
require_index
()
for
set_fuzzy
,
unit2
in
store2
.
iterate_merge
(
fuzzy
,
merge_header
):
# Optionally merge header
if
unit2
.
unit
.
isheader
():
if
isinstance
(
store1
,
poheader
.
poheader
):
store1
.
mergeheaders
(
store2
.
store
)
continue
if
merge_header
:
self
.
store
.
merge_header
(
store2
)
for
set_fuzzy
,
unit2
in
store2
.
iterate_merge
(
fuzzy
):
# Find unit by ID
unit1
=
store1
.
findid
(
unit2
.
unit
.
getid
())
...
...
weblate/trans/tests/data/cs.po
View file @
f02f470e
...
...
@@ -2,6 +2,7 @@
# Copyright (C) 2012 THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# Automatically generated, 2012.
# Testing Weblate, 2015.
#
msgid ""
msgstr ""
...
...
@@ -10,7 +11,7 @@ msgstr ""
"POT-Creation-Date: 2012-03-14 15:54+0100\n"
"PO-Revision-Date: 2012-03-05 15:55+0100\n"
"Last-Translator: Automatically generated\n"
"Language-Team:
none
\n"
"Language-Team:
Test Team <noreply@weblate.org>
\n"
"Language: cs\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
...
...
weblate/trans/tests/test_files.py
View file @
f02f470e
...
...
@@ -107,6 +107,16 @@ class ImportTest(ImportBaseTest):
unit
=
self
.
get_unit
()
self
.
assertEqual
(
unit
.
target
,
TRANSLATION_PO
)
# Verify header
header
=
unit
.
translation
.
store
.
store
.
parseheader
()
self
.
assertEqual
(
header
[
'Language-Team'
],
'Test Team <noreply@weblate.org>'
)
self
.
assertIn
(
'Testing Weblate, 2015.'
,
unit
.
translation
.
store
.
store
.
header
().
getnotes
()
)
def
test_import_author
(
self
):
'''
Test importing normally.
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment