本文整理匯總了Python中weblate.trans.formats.AutoFormat類的典型用法代碼示例。如果您正苦於以下問題:Python AutoFormat類的具體用法?Python AutoFormat怎麽用?Python AutoFormat使用的例子?那麽, 這裏精選的類代碼示例或許可以為您提供幫助。
在下文中一共展示了AutoFormat類的9個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Python代碼示例。
示例1: merge_upload
def merge_upload(self, request, fileobj, overwrite, author=None, merge_header=True, method=""):
"""
Top level handler for file uploads.
"""
# Load backend file
try:
# First try using own loader
store = self.subproject.file_format_cls(fileobj, self.subproject.template_store)
except:
# Fallback to automatic detection
fileobj.seek(0)
store = AutoFormat(fileobj)
# Optionally set authorship
if author is None:
author = self.get_author_name(request.user)
# List translations we should process
translations = Translation.objects.filter(language=self.language, subproject__project=self.subproject.project)
# Filter out those who don't want automatic update, but keep ourselves
translations = translations.filter(Q(pk=self.pk) | Q(subproject__allow_translation_propagation=True))
ret = False
if method in ("", "fuzzy"):
# Do actual merge
for translation in translations:
ret |= translation.merge_store(request, author, store, overwrite, merge_header, (method == "fuzzy"))
else:
# Add as sugestions
ret = self.merge_suggestions(request, store)
return ret, store.count_units()
示例2: merge_upload
def merge_upload(self,
request,
fileobj,
overwrite,
author=None,
merge_header=True,
method=''):
'''
Top level handler for file uploads.
'''
filecopy = fileobj.read()
fileobj.close()
# Load backend file
try:
# First try using own loader
store = self.subproject.file_format_cls(
StringIOMode(fileobj.name, filecopy),
self.subproject.template_store)
except Exception:
# Fallback to automatic detection
store = AutoFormat(StringIOMode(fileobj.name, filecopy), )
# Optionally set authorship
if author is None:
author = self.get_author_name(request.user)
# List translations we should process
# Filter out those who don't want automatic update, but keep ourselves
translations = Translation.objects.filter(
language=self.language,
subproject__project=self.subproject.project).filter(
Q(pk=self.pk)
| Q(subproject__allow_translation_propagation=True))
ret = False
if method in ('', 'fuzzy'):
# Do actual merge
if self.subproject.has_template():
# Merge on units level
self.merge_translations(request, author, store, overwrite,
(method == 'fuzzy'))
else:
# Merge on file level
for translation in translations:
ret |= translation.merge_store(request, author, store,
overwrite, merge_header,
(method == 'fuzzy'))
else:
# Add as sugestions
ret = self.merge_suggestions(request, store)
return ret, store.count_units()
示例3: test_content
def test_content(self):
"""Test content based guess from ttkit"""
with open(TEST_PO, 'rb') as handle:
data = handle.read()
handle = BytesIO(data)
store = AutoFormat.parse(handle)
self.assertIsInstance(store, AutoFormat)
self.assertIsInstance(store.store, pofile)
示例4: upload
def upload(self, request, project, language, fileobj, method):
'''
Handles dictionary upload.
'''
from weblate.trans.models.changes import Change
store = AutoFormat.parse(fileobj)
ret = 0
# process all units
for dummy, unit in store.iterate_merge(False):
source = unit.get_source()
target = unit.get_target()
# Ignore too long words
if len(source) > 190 or len(target) > 190:
continue
# Get object
word, created = self.get_or_create(
project=project,
language=language,
source=source,
defaults={
'target': target,
},
)
# Already existing entry found
if not created:
# Same as current -> ignore
if target == word.target:
continue
if method == 'add':
# Add word
word = self.create(
request,
action=Change.ACTION_DICTIONARY_UPLOAD,
project=project,
language=language,
source=source,
target=target
)
elif method == 'overwrite':
# Update word
word.target = target
word.save()
ret += 1
return ret
示例5: upload
def upload(self, request, project, language, fileobj, method):
"""
Handles dictionary update.
"""
# Load file using translate-toolkit
store = AutoFormat.load(fileobj)
ret, skipped = self.import_store(request, project, language, store, method)
if ret == 0 and skipped > 0 and isinstance(store, csvfile):
# Retry with different CSV scheme
fileobj.seek(0)
store = csvfile(fileobj, ("source", "target"))
ret, skipped = self.import_store(request, project, language, store, method)
return ret
示例6: upload
def upload(self, request, project, language, fileobj, method):
'''
Handles dictionary update.
'''
filecopy = fileobj.read()
fileobj.close()
# Load file using translate-toolkit
store = AutoFormat.load(StringIOMode(fileobj.name, filecopy))
ret, skipped = self.import_store(
request, project, language, store, method
)
if ret == 0 and skipped > 0 and isinstance(store, csvfile):
# Retry with different CSV scheme
store = csvfile(
StringIOMode(fileobj.name, filecopy),
('source', 'target')
)
ret, skipped = self.import_store(
request, project, language, store, method
)
return ret
示例7: single_test
def single_test(self, filename, fileclass):
with open(filename, 'rb') as handle:
store = AutoFormat.parse(handle)
self.assertIsInstance(store, fileclass)
self.assertEqual(fileclass, detect_filename(filename))
示例8: single_test
def single_test(self, filename, fileclass):
with open(filename, 'r') as handle:
store = AutoFormat.parse(handle)
self.assertIsInstance(store, fileclass)
示例9: merge_upload
def merge_upload(self, request, fileobj, overwrite, author=None,
merge_header=True, method='', fuzzy='',
merge_comments=False):
"""Top level handler for file uploads."""
filecopy = fileobj.read()
fileobj.close()
# Strip possible UTF-8 BOM
if filecopy[:3] == codecs.BOM_UTF8:
filecopy = filecopy[3:]
# Load backend file
try:
# First try using own loader
store = self.store.parse(
StringIOMode(fileobj.name, filecopy),
self.subproject.template_store
)
except Exception:
# Fallback to automatic detection
store = AutoFormat.parse(
StringIOMode(fileobj.name, filecopy),
)
# Optionally set authorship
if author is None:
author = get_author_name(request.user)
# Check valid plural forms
if hasattr(store.store, 'parseheader'):
header = store.store.parseheader()
if 'Plural-Forms' in header and \
self.language.get_plural_form() != header['Plural-Forms']:
raise Exception('Plural forms do not match the language.')
# List translations we should process
# Filter out those who don't want automatic update, but keep ourselves
translations = Translation.objects.filter(
language=self.language,
subproject__project=self.subproject.project
).filter(
Q(pk=self.pk) | Q(subproject__allow_translation_propagation=True)
)
ret = False
if method in ('', 'fuzzy'):
# Do actual merge
if self.subproject.has_template():
# Merge on units level
ret = self.merge_translations(
request,
store,
overwrite,
(method == 'fuzzy'),
fuzzy
)
else:
# Merge on file level
for translation in translations:
ret |= translation.merge_store(
request,
author,
store,
overwrite,
merge_header,
(method == 'fuzzy'),
fuzzy,
merge_comments=merge_comments,
)
else:
# Add as sugestions
ret = self.merge_suggestions(request, store, fuzzy)
return ret, store.count_units()