in library/scripts/string_pack.py [0:0]
def compile(self):
self.string_buffer = StringBuffer(encoding=self.encoding)
locales = sorted(self.store.keys())
self.locales_info = bytearray()
locale_blobs_total_size = 0
self.locale_blobs = []
for locale in locales:
blob_append_locale(self.locales_info, locale)
locale_store = LocaleStore()
for id in sorted(self.store[locale].keys()):
value = self.store[locale][id]
locale_store.add_plural_or_string(id, self.string_buffer.add(value))
locale_blob = bytes(locale_store.get_binary_blob())
blob_append_32_bit(self.locales_info, locale_blobs_total_size) # start
locale_blobs_total_size += len(locale_blob)
self.locale_blobs.append(locale_blob)
self.header_blob = bytearray()
blob_append_16_bit(self.header_blob, len(locales)) # Number of locales
blob_append_32_bit(
self.header_blob, _HEADER_SIZE + len(locales) * _LOCALE_HEADER_SIZE
) # Start of locale data
self.header_blob.append(_ENCODING_ID[self.encoding]) # Just one byte
blob_append_32_bit(
self.header_blob,
_HEADER_SIZE
+ len(locales) * _LOCALE_HEADER_SIZE
+ sum([len(blob) for blob in self.locale_blobs]),
) # Start of string data