Когда должны создаваться файлы .mo?

Вставьте его в /etc/rc.local, перед оператором exit.

6
задан 30 May 2012 в 19:45

15 ответов

Двоичные файлы MO необходимо создавать во время сборки. Это означает, что ваша система сборки должна иметь цель сборки, чтобы читать текстовые файлы PO, используемые в качестве источника, и преобразовывать их в бинарные файлы MO, которые будут установлены в системе пользователя. Как вы правильно заметили, команда msgfmt (часть инструментов gettext) в конечном итоге создаст их.

Итак, чтобы ответить на последнюю часть вопроса, да, файлы MO зависят от машины. [ ! d5]

Создание файлов MO трудным путем

Теперь о том, как их создать, в стандартном макете gettext обычно будут все файлы PO в одном каталоге, по одному на каждый язык и именоваться после 2-буквенный или трехбуквенный код каждого из языков:

po/
po/ca.po
po/de.po
...

Если вы хотите создать их вручную, вам придется пройти через каждый файл в этом каталоге и вызвать msgfmt вручную , например

$ msgfmt -c po/ca.po -o build/locale/LC_MESSAGES/ca/myapp.mo

Но вы не хотите этого делать, когда уже существует установленный способ и автоматизированные инструменты, созданные специально для работы с созданием файлов MO.

Кроме того, , эти инструменты заботятся о других связанных задачах, таких как извлечение переводов из кода и объединение их в файл POT, чтобы дать переводчикам возможность выполнять свою работу.

Создание файлов MO умным способом

[d1 2] Если вы используете Python, я очень рекомендую использовать файл MO files (install pde), который автоматизирует и скрывает сложность, просто указав в файле setup.py следующее: 'll использовать для сборки, установки и распространения вашего приложения. Тот же пример, что и @dobey, уже указывал на его ответ:

DistUtilsExtra.auto.setup(
    name='myapp',
    version='0.1',
    #license='GPL-3',
    #author='Your Name',
    #author_email='email@ubuntu.com',
    #description='UI for managing …',
    #long_description='Here a longer description',
    #url='https://launchpad.net/myapp'
)

Это позаботится обо всем для вас.

Если вы хотите проверить перевод перед отправкой, вы может использовать удобную команду build_i18n из python-distutils-extra:

$ python setup.py build_i18n

Это построит все файлы PO в вашей папке /po и поместит их под build (это создаст если это не существует) в том же макете gettext ожидает, когда они будут установлены в системе.

Затем вы можете проверить свое приложение с помощью переводов либо: * Копирование содержимого /build на [ f13] или * Указание вашего приложения на каталог сборки с помощью функции gettext.bindtextdomain():

gettext.bindtextdomain(domain='myapp', localedir='/home/me/dev/myapp/build')

Быть даже умнее

Стоять на плече гигантов. Просто создайте тестовое приложение с помощью gettext.bindtextdomain() и скопируйте, как переводы настроены в setup.py, что в основном сводится к использованию модуля DistutilsExtra в режиме auto, как описано выше. [ ! d20]

Вы можете использовать тестовое приложение, чтобы играть с генерацией переводов и узнать, как работает поколение.

Упаковка

tarball, который вы собрали вместе в качестве части выпуска не должны включать файлы .mo. То есть вам не нужно создавать их вручную. Это должно произойти, когда кто-то создает содержимое tarball для установки вручную или когда, например, создается бинарный пакет Debian.

Глядя на исходное дерево, я бы предложил снова использовать систему сборки, такую ​​как python-distutils-extra, которая также поможет в упаковке. Пример:

Создайте файл setup.py с содержимым, аналогичным приведенному выше. Создайте файлы управления упаковкой в ​​разделе debian /. Используя p-d-e, ваш файл debian/rules может стать очень простым и состоять всего из нескольких строк.

На самом деле вы можете просто использовать Quickly для создания жгута для системы сборки и упаковки для вашего приложения, а затем заменить исходный код Quickly для тестового приложения кодом вашего приложения.

5
ответ дан 25 May 2018 в 10:48
  • 1
    Большое спасибо за ваш подробный ответ. Я действительно пытался быстро использовать, когда я впервые начал этот проект, однако быстро создает много файлов, таких как builders.py и т. Д. И т. Д. ... что я не понимаю работу. Вот почему я создал все с нуля самостоятельно без какой-либо помощи быстро. Поэтому я попытаюсь использовать python-distutils-extra как-то в моем проекте. – nik90 30 May 2012 в 20:05
  • 2
    Добро пожаловать :) Что касается файлов, которые быстро создаются, большинство из них составляют только жужжание приложения. Для большинства приложений Quickly вы можете игнорировать то, что находится в папке myapp_lib, и сосредоточиться только на файле MyAppWindow.py. Если вы обнаружите, что все еще слишком сложно, есть еще одна альтернатива: создайте базовую структуру приложения с помощью Quickly, удалите все файлы исходного кода, удалите часть над строкой комментария из сгенерированного файла setup.py и просто отпустите исходный код внутри папки myapp (при условии, что ваш проект называется myapp). Это не поддерживается, но выполнимо. – David Planella 30 May 2012 в 21:07

Двоичные файлы MO должны быть сгенерированы во время сборки. Это означает, что ваша система сборки должна иметь цель сборки, чтобы читать текстовые файлы PO , используемые в качестве источника, и преобразовывать их в бинарные файлы MO, которые будут установлены в системе пользователя. Как вы правильно заметили, команда msgfmt (часть инструментов gettext ) в конечном итоге создаст их.

Итак, чтобы ответить на последнюю часть вопрос, да, файлы MO зависят от машины.

Создание файлов MO трудным способом

Теперь о том, как их создать, в стандартном макете gettext вы, как правило, будете иметь все файлы PO в одном каталоге, по одному на каждый язык и названы в соответствии с 2-буквенным или трехбуквенным кодом ISO-639 каждого языка:

po/
po/ca.po
po/de.po
...

Если вы хотите их вручную создать, пропустить каждый файл в этом каталоге и вызвать msgfmt вручную, например

$ msgfmt -c po/ca.po -o build/locale/LC_MESSAGES/ca/myapp.mo

. Но вы не хотите этого делать, когда уже существует установленный способ и автоматизированные инструменты, созданные специально для работа над созданием файлов MO.

Кроме того, эти инструменты заботятся о других связанных задачах, таких как извлечение переводов из кода и объединение их в файл POT, чтобы дать переводчикам работу.

Создание файла MO s умный способ

Если вы используете Python, я очень рекомендую использовать пакет python-distutils-extra (установить pde), который автоматизирует и скрывает сложность просто необходимо указать следующее в файле setup.py, которое вы будете использовать для сборки, установки и распространения вашего приложения. Тот же пример, что и @dobey, уже указывал на его ответ:

DistUtilsExtra.auto.setup(
    name='myapp',
    version='0.1',
    #license='GPL-3',
    #author='Your Name',
    #author_email='email@ubuntu.com',
    #description='UI for managing …',
    #long_description='Here a longer description',
    #url='https://launchpad.net/myapp'
)

Это позаботится обо всем для вас.

Если вы хотите проверить перевод перед отправкой, вы может использовать удобную команду build_i18n из python-distutils-extra:

$ python setup.py build_i18n

Это создаст все PO-файлы в вашей папке /po и поместит их под build (это создаст если он не существует) в том же макете gettext ожидает, когда они будут установлены в системе.

Затем вы можете проверить свое приложение на перевод или путем: * Копирование содержимого /build на /usr/share/locale или * Указание вашего приложения на каталог сборки с помощью функции gettext.bindtextdomain() :

gettext.bindtextdomain(domain='myapp', localedir='/home/me/dev/myapp/build')

Быть даже умнее

Встаньте на плечо гигантов. Просто создайте тестовое приложение с помощью Быстро и скопируйте, как переводы настроены в setup.py, что в основном сводится к использованию модуля DistutilsExtra в режиме auto, как описано выше.

Вы можете использовать тестовое приложение, чтобы играть с генерированием переводов, и узнать, как работает поколение.

Упаковка

tarball, который вы собрали вместе в качестве части выпуска, не должен включают файлы .mo. То есть вам не нужно создавать их вручную. Это должно произойти, когда кто-то создает содержимое tarball для установки вручную или когда, например, создается бинарный пакет Debian.

Глядя на исходное дерево, я бы предложил снова использовать систему сборки, такую ​​как python-distutils-extra, которая также поможет в упаковке. Пример:

  • Создайте файл setup.py с содержимым, аналогичным указанному выше
  • Создайте файлы управления упаковкой в ​​разделе debian /. Используя pde, ваш файл debian/rules может стать очень простым и состоять всего из нескольких строк.

На самом деле вы можете просто использовать Quickly для создания жгута для системы сборки и упаковки для ваше приложение, а затем замените исходный код Quickly для тестового приложения кодом вашего приложения.

5
ответ дан 25 July 2018 в 18:42

Двоичные файлы MO должны быть сгенерированы во время сборки. Это означает, что ваша система сборки должна иметь цель сборки, чтобы читать текстовые файлы PO , используемые в качестве источника, и преобразовывать их в бинарные файлы MO, которые будут установлены в системе пользователя. Как вы правильно заметили, команда msgfmt (часть инструментов gettext ) в конечном итоге создаст их.

Итак, чтобы ответить на последнюю часть вопрос, да, файлы MO зависят от машины.

Создание файлов MO трудным способом

Теперь о том, как их создать, в стандартном макете gettext вы, как правило, будете иметь все файлы PO в одном каталоге, по одному на каждый язык и названы в соответствии с 2-буквенным или трехбуквенным кодом ISO-639 каждого языка:

po/
po/ca.po
po/de.po
...

Если вы хотите их вручную создать, пропустить каждый файл в этом каталоге и вызвать msgfmt вручную, например

$ msgfmt -c po/ca.po -o build/locale/LC_MESSAGES/ca/myapp.mo

. Но вы не хотите этого делать, когда уже существует установленный способ и автоматизированные инструменты, созданные специально для работа над созданием файлов MO.

Кроме того, эти инструменты заботятся о других связанных задачах, таких как извлечение переводов из кода и объединение их в файл POT, чтобы дать переводчикам работу.

Создание файла MO s умный способ

Если вы используете Python, я очень рекомендую использовать пакет python-distutils-extra (установить pde), который автоматизирует и скрывает сложность просто необходимо указать следующее в файле setup.py, которое вы будете использовать для сборки, установки и распространения вашего приложения. Тот же пример, что и @dobey, уже указывал на его ответ:

DistUtilsExtra.auto.setup(
    name='myapp',
    version='0.1',
    #license='GPL-3',
    #author='Your Name',
    #author_email='email@ubuntu.com',
    #description='UI for managing …',
    #long_description='Here a longer description',
    #url='https://launchpad.net/myapp'
)

Это позаботится обо всем для вас.

Если вы хотите проверить перевод перед отправкой, вы может использовать удобную команду build_i18n из python-distutils-extra:

$ python setup.py build_i18n

Это создаст все PO-файлы в вашей папке /po и поместит их под build (это создаст если он не существует) в том же макете gettext ожидает, когда они будут установлены в системе.

Затем вы можете проверить свое приложение на перевод или путем: * Копирование содержимого /build на /usr/share/locale или * Указание вашего приложения на каталог сборки с помощью функции gettext.bindtextdomain() :

gettext.bindtextdomain(domain='myapp', localedir='/home/me/dev/myapp/build')

Быть даже умнее

Встаньте на плечо гигантов. Просто создайте тестовое приложение с помощью Быстро и скопируйте, как переводы настроены в setup.py, что в основном сводится к использованию модуля DistutilsExtra в режиме auto, как описано выше.

Вы можете использовать тестовое приложение, чтобы играть с генерированием переводов, и узнать, как работает поколение.

Упаковка

tarball, который вы собрали вместе в качестве части выпуска, не должен включают файлы .mo. То есть вам не нужно создавать их вручную. Это должно произойти, когда кто-то создает содержимое tarball для установки вручную или когда, например, создается бинарный пакет Debian.

Глядя на исходное дерево, я бы предложил снова использовать систему сборки, такую ​​как python-distutils-extra, которая также поможет в упаковке. Пример:

  • Создайте файл setup.py с содержимым, аналогичным указанному выше
  • Создайте файлы управления упаковкой в ​​разделе debian /. Используя pde, ваш файл debian/rules может стать очень простым и состоять всего из нескольких строк.

На самом деле вы можете просто использовать Quickly для создания жгута для системы сборки и упаковки для ваше приложение, а затем замените исходный код Quickly для тестового приложения кодом вашего приложения.

5
ответ дан 2 August 2018 в 00:52

Двоичные файлы MO должны быть сгенерированы во время сборки. Это означает, что ваша система сборки должна иметь цель сборки, чтобы читать текстовые файлы PO , используемые в качестве источника, и преобразовывать их в бинарные файлы MO, которые будут установлены в системе пользователя. Как вы правильно заметили, команда msgfmt (часть инструментов gettext ) в конечном итоге создаст их.

Итак, чтобы ответить на последнюю часть вопрос, да, файлы MO зависят от машины.

Создание файлов MO трудным способом

Теперь о том, как их создать, в стандартном макете gettext вы, как правило, будете иметь все файлы PO в одном каталоге, по одному на каждый язык и названы в соответствии с 2-буквенным или трехбуквенным кодом ISO-639 каждого языка:

po/
po/ca.po
po/de.po
...

Если вы хотите их вручную создать, пропустить каждый файл в этом каталоге и вызвать msgfmt вручную, например

$ msgfmt -c po/ca.po -o build/locale/LC_MESSAGES/ca/myapp.mo

. Но вы не хотите этого делать, когда уже существует установленный способ и автоматизированные инструменты, созданные специально для работа над созданием файлов MO.

Кроме того, эти инструменты заботятся о других связанных задачах, таких как извлечение переводов из кода и объединение их в файл POT, чтобы дать переводчикам работу.

Создание файла MO s умный способ

Если вы используете Python, я очень рекомендую использовать пакет python-distutils-extra (установить pde), который автоматизирует и скрывает сложность просто необходимо указать следующее в файле setup.py, которое вы будете использовать для сборки, установки и распространения вашего приложения. Тот же пример, что и @dobey, уже указывал на его ответ:

DistUtilsExtra.auto.setup(
    name='myapp',
    version='0.1',
    #license='GPL-3',
    #author='Your Name',
    #author_email='email@ubuntu.com',
    #description='UI for managing …',
    #long_description='Here a longer description',
    #url='https://launchpad.net/myapp'
)

Это позаботится обо всем для вас.

Если вы хотите проверить перевод перед отправкой, вы может использовать удобную команду build_i18n из python-distutils-extra:

$ python setup.py build_i18n

Это создаст все PO-файлы в вашей папке /po и поместит их под build (это создаст если он не существует) в том же макете gettext ожидает, когда они будут установлены в системе.

Затем вы можете проверить свое приложение на перевод или путем: * Копирование содержимого /build на /usr/share/locale или * Указание вашего приложения на каталог сборки с помощью функции gettext.bindtextdomain() :

gettext.bindtextdomain(domain='myapp', localedir='/home/me/dev/myapp/build')

Быть даже умнее

Встаньте на плечо гигантов. Просто создайте тестовое приложение с помощью Быстро и скопируйте, как переводы настроены в setup.py, что в основном сводится к использованию модуля DistutilsExtra в режиме auto, как описано выше.

Вы можете использовать тестовое приложение, чтобы играть с генерированием переводов, и узнать, как работает поколение.

Упаковка

tarball, который вы собрали вместе в качестве части выпуска, не должен включают файлы .mo. То есть вам не нужно создавать их вручную. Это должно произойти, когда кто-то создает содержимое tarball для установки вручную или когда, например, создается бинарный пакет Debian.

Глядя на исходное дерево, я бы предложил снова использовать систему сборки, такую ​​как python-distutils-extra, которая также поможет в упаковке. Пример:

  • Создайте файл setup.py с содержимым, аналогичным указанному выше
  • Создайте файлы управления упаковкой в ​​разделе debian /. Используя pde, ваш файл debian/rules может стать очень простым и состоять всего из нескольких строк.

На самом деле вы можете просто использовать Quickly для создания жгута для системы сборки и упаковки для ваше приложение, а затем замените исходный код Quickly для тестового приложения кодом вашего приложения.

5
ответ дан 4 August 2018 в 16:22

Двоичные файлы MO должны быть сгенерированы во время сборки. Это означает, что ваша система сборки должна иметь цель сборки, чтобы читать текстовые файлы PO , используемые в качестве источника, и преобразовывать их в бинарные файлы MO, которые будут установлены в системе пользователя. Как вы правильно заметили, команда msgfmt (часть инструментов gettext ) в конечном итоге создаст их.

Итак, чтобы ответить на последнюю часть вопрос, да, файлы MO зависят от машины.

Создание файлов MO трудным способом

Теперь о том, как их создать, в стандартном макете gettext вы, как правило, будете иметь все файлы PO в одном каталоге, по одному на каждый язык и названы в соответствии с 2-буквенным или трехбуквенным кодом ISO-639 каждого языка:

po/
po/ca.po
po/de.po
...

Если вы хотите их вручную создать, пропустить каждый файл в этом каталоге и вызвать msgfmt вручную, например

$ msgfmt -c po/ca.po -o build/locale/LC_MESSAGES/ca/myapp.mo

. Но вы не хотите этого делать, когда уже существует установленный способ и автоматизированные инструменты, созданные специально для работа над созданием файлов MO.

Кроме того, эти инструменты заботятся о других связанных задачах, таких как извлечение переводов из кода и объединение их в файл POT, чтобы дать переводчикам работу.

Создание файла MO s умный способ

Если вы используете Python, я очень рекомендую использовать пакет python-distutils-extra (установить pde), который автоматизирует и скрывает сложность просто необходимо указать следующее в файле setup.py, которое вы будете использовать для сборки, установки и распространения вашего приложения. Тот же пример, что и @dobey, уже указывал на его ответ:

DistUtilsExtra.auto.setup(
    name='myapp',
    version='0.1',
    #license='GPL-3',
    #author='Your Name',
    #author_email='email@ubuntu.com',
    #description='UI for managing …',
    #long_description='Here a longer description',
    #url='https://launchpad.net/myapp'
)

Это позаботится обо всем для вас.

Если вы хотите проверить перевод перед отправкой, вы может использовать удобную команду build_i18n из python-distutils-extra:

$ python setup.py build_i18n

Это создаст все PO-файлы в вашей папке /po и поместит их под build (это создаст если он не существует) в том же макете gettext ожидает, когда они будут установлены в системе.

Затем вы можете проверить свое приложение на перевод или путем: * Копирование содержимого /build на /usr/share/locale или * Указание вашего приложения на каталог сборки с помощью функции gettext.bindtextdomain() :

gettext.bindtextdomain(domain='myapp', localedir='/home/me/dev/myapp/build')

Быть даже умнее

Встаньте на плечо гигантов. Просто создайте тестовое приложение с помощью Быстро и скопируйте, как переводы настроены в setup.py, что в основном сводится к использованию модуля DistutilsExtra в режиме auto, как описано выше.

Вы можете использовать тестовое приложение, чтобы играть с генерированием переводов, и узнать, как работает поколение.

Упаковка

tarball, который вы собрали вместе в качестве части выпуска, не должен включают файлы .mo. То есть вам не нужно создавать их вручную. Это должно произойти, когда кто-то создает содержимое tarball для установки вручную или когда, например, создается бинарный пакет Debian.

Глядя на исходное дерево, я бы предложил снова использовать систему сборки, такую ​​как python-distutils-extra, которая также поможет в упаковке. Пример:

  • Создайте файл setup.py с содержимым, аналогичным указанному выше
  • Создайте файлы управления упаковкой в ​​разделе debian /. Используя pde, ваш файл debian/rules может стать очень простым и состоять всего из нескольких строк.

На самом деле вы можете просто использовать Quickly для создания жгута для системы сборки и упаковки для ваше приложение, а затем замените исходный код Quickly для тестового приложения кодом вашего приложения.

5
ответ дан 6 August 2018 в 01:01

Двоичные файлы MO должны быть сгенерированы во время сборки. Это означает, что ваша система сборки должна иметь цель сборки, чтобы читать текстовые файлы PO , используемые в качестве источника, и преобразовывать их в бинарные файлы MO, которые будут установлены в системе пользователя. Как вы правильно заметили, команда msgfmt (часть инструментов gettext ) в конечном итоге создаст их.

Итак, чтобы ответить на последнюю часть вопрос, да, файлы MO зависят от машины.

Создание файлов MO трудным способом

Теперь о том, как их создать, в стандартном макете gettext вы, как правило, будете иметь все файлы PO в одном каталоге, по одному на каждый язык и названы в соответствии с 2-буквенным или трехбуквенным кодом ISO-639 каждого языка:

po/
po/ca.po
po/de.po
...

Если вы хотите их вручную создать, пропустить каждый файл в этом каталоге и вызвать msgfmt вручную, например

$ msgfmt -c po/ca.po -o build/locale/LC_MESSAGES/ca/myapp.mo

. Но вы не хотите этого делать, когда уже существует установленный способ и автоматизированные инструменты, созданные специально для работа над созданием файлов MO.

Кроме того, эти инструменты заботятся о других связанных задачах, таких как извлечение переводов из кода и объединение их в файл POT, чтобы дать переводчикам работу.

Создание файла MO s умный способ

Если вы используете Python, я очень рекомендую использовать пакет python-distutils-extra (установить pde), который автоматизирует и скрывает сложность просто необходимо указать следующее в файле setup.py, которое вы будете использовать для сборки, установки и распространения вашего приложения. Тот же пример, что и @dobey, уже указывал на его ответ:

DistUtilsExtra.auto.setup(
    name='myapp',
    version='0.1',
    #license='GPL-3',
    #author='Your Name',
    #author_email='email@ubuntu.com',
    #description='UI for managing …',
    #long_description='Here a longer description',
    #url='https://launchpad.net/myapp'
)

Это позаботится обо всем для вас.

Если вы хотите проверить перевод перед отправкой, вы может использовать удобную команду build_i18n из python-distutils-extra:

$ python setup.py build_i18n

Это создаст все PO-файлы в вашей папке /po и поместит их под build (это создаст если он не существует) в том же макете gettext ожидает, когда они будут установлены в системе.

Затем вы можете проверить свое приложение на перевод или путем: * Копирование содержимого /build на /usr/share/locale или * Указание вашего приложения на каталог сборки с помощью функции gettext.bindtextdomain() :

gettext.bindtextdomain(domain='myapp', localedir='/home/me/dev/myapp/build')

Быть даже умнее

Встаньте на плечо гигантов. Просто создайте тестовое приложение с помощью Быстро и скопируйте, как переводы настроены в setup.py, что в основном сводится к использованию модуля DistutilsExtra в режиме auto, как описано выше.

Вы можете использовать тестовое приложение, чтобы играть с генерированием переводов, и узнать, как работает поколение.

Упаковка

tarball, который вы собрали вместе в качестве части выпуска, не должен включают файлы .mo. То есть вам не нужно создавать их вручную. Это должно произойти, когда кто-то создает содержимое tarball для установки вручную или когда, например, создается бинарный пакет Debian.

Глядя на исходное дерево, я бы предложил снова использовать систему сборки, такую ​​как python-distutils-extra, которая также поможет в упаковке. Пример:

  • Создайте файл setup.py с содержимым, аналогичным указанному выше
  • Создайте файлы управления упаковкой в ​​разделе debian /. Используя pde, ваш файл debian/rules может стать очень простым и состоять всего из нескольких строк.

На самом деле вы можете просто использовать Quickly для создания жгута для системы сборки и упаковки для ваше приложение, а затем замените исходный код Quickly для тестового приложения кодом вашего приложения.

5
ответ дан 7 August 2018 в 18:28

Двоичные файлы MO должны быть сгенерированы во время сборки. Это означает, что ваша система сборки должна иметь цель сборки, чтобы читать текстовые файлы PO , используемые в качестве источника, и преобразовывать их в бинарные файлы MO, которые будут установлены в системе пользователя. Как вы правильно заметили, команда msgfmt (часть инструментов gettext ) в конечном итоге создаст их.

Итак, чтобы ответить на последнюю часть вопрос, да, файлы MO зависят от машины.

Создание файлов MO трудным способом

Теперь о том, как их создать, в стандартном макете gettext вы, как правило, будете иметь все файлы PO в одном каталоге, по одному на каждый язык и названы в соответствии с 2-буквенным или трехбуквенным кодом ISO-639 каждого языка:

po/
po/ca.po
po/de.po
...

Если вы хотите их вручную создать, пропустить каждый файл в этом каталоге и вызвать msgfmt вручную, например

$ msgfmt -c po/ca.po -o build/locale/LC_MESSAGES/ca/myapp.mo

. Но вы не хотите этого делать, когда уже существует установленный способ и автоматизированные инструменты, созданные специально для работа над созданием файлов MO.

Кроме того, эти инструменты заботятся о других связанных задачах, таких как извлечение переводов из кода и объединение их в файл POT, чтобы дать переводчикам работу.

Создание файла MO s умный способ

Если вы используете Python, я очень рекомендую использовать пакет python-distutils-extra (установить pde), который автоматизирует и скрывает сложность просто необходимо указать следующее в файле setup.py, которое вы будете использовать для сборки, установки и распространения вашего приложения. Тот же пример, что и @dobey, уже указывал на его ответ:

DistUtilsExtra.auto.setup(
    name='myapp',
    version='0.1',
    #license='GPL-3',
    #author='Your Name',
    #author_email='email@ubuntu.com',
    #description='UI for managing …',
    #long_description='Here a longer description',
    #url='https://launchpad.net/myapp'
)

Это позаботится обо всем для вас.

Если вы хотите проверить перевод перед отправкой, вы может использовать удобную команду build_i18n из python-distutils-extra:

$ python setup.py build_i18n

Это создаст все PO-файлы в вашей папке /po и поместит их под build (это создаст если он не существует) в том же макете gettext ожидает, когда они будут установлены в системе.

Затем вы можете проверить свое приложение на перевод или путем: * Копирование содержимого /build на /usr/share/locale или * Указание вашего приложения на каталог сборки с помощью функции gettext.bindtextdomain() :

gettext.bindtextdomain(domain='myapp', localedir='/home/me/dev/myapp/build')

Быть даже умнее

Встаньте на плечо гигантов. Просто создайте тестовое приложение с помощью Быстро и скопируйте, как переводы настроены в setup.py, что в основном сводится к использованию модуля DistutilsExtra в режиме auto, как описано выше.

Вы можете использовать тестовое приложение, чтобы играть с генерированием переводов, и узнать, как работает поколение.

Упаковка

tarball, который вы собрали вместе в качестве части выпуска, не должен включают файлы .mo. То есть вам не нужно создавать их вручную. Это должно произойти, когда кто-то создает содержимое tarball для установки вручную или когда, например, создается бинарный пакет Debian.

Глядя на исходное дерево, я бы предложил снова использовать систему сборки, такую ​​как python-distutils-extra, которая также поможет в упаковке. Пример:

  • Создайте файл setup.py с содержимым, аналогичным указанному выше
  • Создайте файлы управления упаковкой в ​​разделе debian /. Используя pde, ваш файл debian/rules может стать очень простым и состоять всего из нескольких строк.

На самом деле вы можете просто использовать Quickly для создания жгута для системы сборки и упаковки для ваше приложение, а затем замените исходный код Quickly для тестового приложения кодом вашего приложения.

5
ответ дан 10 August 2018 в 07:09

Двоичные файлы MO должны быть сгенерированы во время сборки. Это означает, что ваша система сборки должна иметь цель сборки, чтобы читать текстовые файлы PO , используемые в качестве источника, и преобразовывать их в бинарные файлы MO, которые будут установлены в системе пользователя. Как вы правильно заметили, команда msgfmt (часть инструментов gettext ) в конечном итоге создаст их.

Итак, чтобы ответить на последнюю часть вопрос, да, файлы MO зависят от машины.

Создание файлов MO трудным способом

Теперь о том, как их создать, в стандартном макете gettext вы, как правило, будете иметь все файлы PO в одном каталоге, по одному на каждый язык и названы в соответствии с 2-буквенным или трехбуквенным кодом ISO-639 каждого языка:

po/
po/ca.po
po/de.po
...

Если вы хотите их вручную создать, пропустить каждый файл в этом каталоге и вызвать msgfmt вручную, например

$ msgfmt -c po/ca.po -o build/locale/LC_MESSAGES/ca/myapp.mo

. Но вы не хотите этого делать, когда уже существует установленный способ и автоматизированные инструменты, созданные специально для работа над созданием файлов MO.

Кроме того, эти инструменты заботятся о других связанных задачах, таких как извлечение переводов из кода и объединение их в файл POT, чтобы дать переводчикам работу.

Создание файла MO s умный способ

Если вы используете Python, я очень рекомендую использовать пакет python-distutils-extra (установить pde), который автоматизирует и скрывает сложность просто необходимо указать следующее в файле setup.py, которое вы будете использовать для сборки, установки и распространения вашего приложения. Тот же пример, что и @dobey, уже указывал на его ответ:

DistUtilsExtra.auto.setup(
    name='myapp',
    version='0.1',
    #license='GPL-3',
    #author='Your Name',
    #author_email='email@ubuntu.com',
    #description='UI for managing …',
    #long_description='Here a longer description',
    #url='https://launchpad.net/myapp'
)

Это позаботится обо всем для вас.

Если вы хотите проверить перевод перед отправкой, вы может использовать удобную команду build_i18n из python-distutils-extra:

$ python setup.py build_i18n

Это создаст все PO-файлы в вашей папке /po и поместит их под build (это создаст если он не существует) в том же макете gettext ожидает, когда они будут установлены в системе.

Затем вы можете проверить свое приложение на перевод или путем: * Копирование содержимого /build на /usr/share/locale или * Указание вашего приложения на каталог сборки с помощью функции gettext.bindtextdomain() :

gettext.bindtextdomain(domain='myapp', localedir='/home/me/dev/myapp/build')

Быть даже умнее

Встаньте на плечо гигантов. Просто создайте тестовое приложение с помощью Быстро и скопируйте, как переводы настроены в setup.py, что в основном сводится к использованию модуля DistutilsExtra в режиме auto, как описано выше.

Вы можете использовать тестовое приложение, чтобы играть с генерированием переводов, и узнать, как работает поколение.

Упаковка

tarball, который вы собрали вместе в качестве части выпуска, не должен включают файлы .mo. То есть вам не нужно создавать их вручную. Это должно произойти, когда кто-то создает содержимое tarball для установки вручную или когда, например, создается бинарный пакет Debian.

Глядя на исходное дерево, я бы предложил снова использовать систему сборки, такую ​​как python-distutils-extra, которая также поможет в упаковке. Пример:

  • Создайте файл setup.py с содержимым, аналогичным указанному выше
  • Создайте файлы управления упаковкой в ​​разделе debian /. Используя pde, ваш файл debian/rules может стать очень простым и состоять всего из нескольких строк.

На самом деле вы можете просто использовать Quickly для создания жгута для системы сборки и упаковки для ваше приложение, а затем замените исходный код Quickly для тестового приложения кодом вашего приложения.

5
ответ дан 15 August 2018 в 19:09
  • 1
    Большое спасибо за ваш подробный ответ. Я действительно пытался быстро использовать, когда я впервые начал этот проект, однако быстро создает много файлов, таких как builders.py и т. Д. И т. Д. ... что я не понимаю работу. Вот почему я создал все с нуля самостоятельно без какой-либо помощи быстро. Поэтому я попытаюсь использовать python-distutils-extra как-то в моем проекте. – nik90 30 May 2012 в 20:05
  • 2
    – David Planella 30 May 2012 в 21:07

Учитывая, что вы используете Python, я предполагаю, что вы используете setuptools / distribute / distutils в качестве системы сборки. В таком случае вы можете использовать DistUtilsExtra.auto вместо:


from DistUtilsExtra.auto import setup

setup(
    name="Your Project",
    version="0.1",
    ...
)

Вы можете передать те же аргументы в setup (), что и обычно для своего пакета. DistUtilsExtra.auto может автоматически обрабатывать многие элементы интеграции системы, такие как переводы, включая перевод статических текстовых файлов, таких как файлы .desktop.

2
ответ дан 25 May 2018 в 10:48
  • 1
    Я не использую setuptools / distribute / distutils для своего проекта. Мой проект имеет файлы .py, .pyc и .ui. Затем я использую debian-упаковку для обеспечения того, чтобы файлы были установлены в правильном каталоге .. и мой рабочий стол в основном выполняет основной .py-файл. – nik90 30 May 2012 в 18:53
  • 2
    Тогда вы должны переключиться на использование setup.py. Использование правильной системы сборки заботится о большой работе, которая в противном случае должна быть выполнена вручную, и упрощает поддержку многих системных конфигураций и автоматическое. – dobey 30 May 2012 в 20:37
  • 3
    да, я понимаю, что теперь ... Я скоро задам еще один вопрос об disutils. Я получаю концепцию использования setup.py..but, я пропускаю большую картинку. Я имею в виду, зачем использовать setup.py, когда я уже упаковал его в формате .deb? Но не отвечайте на этот вопрос, так как я создам новый вопрос askubuntu для этого :) – nik90 30 May 2012 в 20:39

Учитывая, что вы используете Python, я предполагаю, что вы используете setuptools / distribute / distutils в качестве системы сборки. В таком случае вы можете использовать DistUtilsExtra.auto вместо:


from DistUtilsExtra.auto import setup

setup(
    name="Your Project",
    version="0.1",
    ...
)

Вы можете передать те же аргументы в setup (), что и обычно для своего пакета. DistUtilsExtra.auto может автоматически обрабатывать многие элементы интеграции системы, такие как переводы, включая перевод статических текстовых файлов, таких как файлы .desktop.

2
ответ дан 25 July 2018 в 18:42

Учитывая, что вы используете Python, я предполагаю, что вы используете setuptools / distribute / distutils в качестве системы сборки. В таком случае вы можете использовать DistUtilsExtra.auto вместо:


from DistUtilsExtra.auto import setup

setup(
    name="Your Project",
    version="0.1",
    ...
)

Вы можете передать те же аргументы в setup (), что и обычно для своего пакета. DistUtilsExtra.auto может автоматически обрабатывать многие элементы интеграции системы, такие как переводы, включая перевод статических текстовых файлов, таких как файлы .desktop.

2
ответ дан 2 August 2018 в 00:52

Учитывая, что вы используете Python, я предполагаю, что вы используете setuptools / distribute / distutils в качестве системы сборки. В таком случае вы можете использовать DistUtilsExtra.auto вместо:


from DistUtilsExtra.auto import setup

setup(
    name="Your Project",
    version="0.1",
    ...
)

Вы можете передать те же аргументы в setup (), что и обычно для своего пакета. DistUtilsExtra.auto может автоматически обрабатывать многие элементы интеграции системы, такие как переводы, включая перевод статических текстовых файлов, таких как файлы .desktop.

2
ответ дан 4 August 2018 в 16:22

Учитывая, что вы используете Python, я предполагаю, что вы используете setuptools / distribute / distutils в качестве системы сборки. В таком случае вы можете использовать DistUtilsExtra.auto вместо:


from DistUtilsExtra.auto import setup

setup(
    name="Your Project",
    version="0.1",
    ...
)

Вы можете передать те же аргументы в setup (), что и обычно для своего пакета. DistUtilsExtra.auto может автоматически обрабатывать многие элементы интеграции системы, такие как переводы, включая перевод статических текстовых файлов, таких как файлы .desktop.

2
ответ дан 6 August 2018 в 01:01

Учитывая, что вы используете Python, я предполагаю, что вы используете setuptools / distribute / distutils в качестве системы сборки. В таком случае вы можете использовать DistUtilsExtra.auto вместо:


from DistUtilsExtra.auto import setup

setup(
    name="Your Project",
    version="0.1",
    ...
)

Вы можете передать те же аргументы в setup (), что и обычно для своего пакета. DistUtilsExtra.auto может автоматически обрабатывать многие элементы интеграции системы, такие как переводы, включая перевод статических текстовых файлов, таких как файлы .desktop.

2
ответ дан 7 August 2018 в 18:28

Учитывая, что вы используете Python, я предполагаю, что вы используете setuptools / distribute / distutils в качестве системы сборки. В таком случае вы можете использовать DistUtilsExtra.auto вместо:


from DistUtilsExtra.auto import setup

setup(
    name="Your Project",
    version="0.1",
    ...
)

Вы можете передать те же аргументы в setup (), что и обычно для своего пакета. DistUtilsExtra.auto может автоматически обрабатывать многие элементы интеграции системы, такие как переводы, включая перевод статических текстовых файлов, таких как файлы .desktop.

2
ответ дан 10 August 2018 в 07:09

Другие вопросы по тегам:

Похожие вопросы: