{ "info": { "author": "Ecometrica Ltd", "author_email": "software@ecometrica.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Framework :: Django", "Framework :: Django :: 1.10", "Framework :: Django :: 1.11", "Framework :: Django :: 2.0", "Framework :: Django :: 2.1", "License :: OSI Approved :: BSD License", "Operating System :: POSIX", "Programming Language :: Python", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7", "Topic :: Software Development :: Internationalization" ], "description": ".. image:: https://travis-ci.com/ecometrica/django-vinaigrette.svg?branch=master\n :target: https://travis-ci.com/ecometrica/django-vinaigrette?branch=master\n.. image:: https://coveralls.io/repos/github/ecometrica/django-vinaigrette/badge.svg?branch=master\n :target: https://coveralls.io/github/ecometrica/django-vinaigrette?branch=master\n\n\n==================\ndjango-vinaigrette\n==================\n\nVinaigrette translates Django model data -- stored in the database -- using GNU gettext\nand Django's standard internationalization features.\n\nInstalling\n==========\n\nAdd ``vinaigrette`` to ``INSTALLED_APPS`` in your settings.\n\nThen, tell vinaigrette which fields you want to translate. Because vinaigrette needs to register signals,\nyou should register your model translations when models have finished loading, in the appropriate ``apps.py`` files\n(or wherever you keep your ``AppConfig`` subclasses):\n\n.. code:: python\n\n import vinaigrette\n\n class SaladAppConfig(AppConfig):\n def ready(self):\n # Import the model requiring translation\n from .models import Ingredient # or...\n Ingredient = self.get_model(\"Ingredient\")\n\n # Register fields to translate\n vinaigrette.register(Ingredient, ['name', 'description'])\n\n\nThis tells vinaigrette to translate the ``name`` and ``description`` fields on Ingredient objects.\n\nUsing\n=====\n\nAfter installing vinaigrette, the PO files generated by ``manage.py makemessages`` will include\nstrings from the registered fields. If a particular string is translated, the model value will\nbe the string translated into the appropriate language:\n\n.. code:: python\n\n >>> from django.utils.translation import activate\n >>> i = Ingredient(name=u'Lettuce')\n >>> i.name\n u'Lettuce'\n >>> activate('fr')\n >>> i.name\n u'Laitue'\n\nEt cetera\n=========\n\nThere are a couple of options to restrict which objects translation strings will be collected\nfrom. See the docstring for ``vinaigrette.register``.\n\nVinaigrette adds a ``--keep-obsolete`` option to ``manage.py makemessages``, which prevents gettext\nfrom deactivating translated messages no longer present in code or in registered database fields.\n\nVinaigrette is designed for database content that is:\n\n- always edited in the default language\n- edited by site administrators, not users\n\nOnly model instances are translated. Data accessed via the Django QuerySet ``values`` method will\nnot be translated.\n\nIn general, when a field is accessed, it will always return the translated version, if one exists.\nHowever, if a value is set, the exact value entered (and not the translated version) should be saved\nto the database. For example:\n\n.. code:: python\n\n >>> from django.utils.translation import activate\n >>> i = Ingredient(name=u'Lettuce')\n >>> activate('fr')\n >>> i.name\n u'Laitue'\n >>> i.name = 'Cabbage'\n >>> i.name\n u'Chou'\n >>> i.save()\n >>> Ingredient.objects.get(name='Cabbage').name\n u'Chou'\n\nHelp! The Admin is messing up all the vinaigrette fields whenever I save changes!\n---------------------------------------------------------------------------------\n\nAdd ``vinaigrette.middleware.VinaigretteAdminLanguageMiddleware`` to your\n``settings.MIDDLEWARE`` to force the admin to always use the main language, and\nnot have vinaigrette mess with your change views.\n\nContributing\n============\n\nTesting\n-------\n\n* Create a virtualenv for the project\n* Install ``tox``. When tox is run, it will create the test environments for\n supported Django and Python versions and then run tests against them\n\n\nRelease Notes\n=============\n\n1.2.1\n-----\n\n* Fix Python 2 support for makemessages\n\n * Add a test for makemessages\n\n\n1.2.0\n--------\n\n* Added an optional contexts parameter for the register function, for\n providing translation context for model fields.\n\n* Update middleware to the 1.10+ style\n\n * Maintains backwards-compat with 1.9 and below\n\n * Will now work in either ``MIDDLEWARE_CLASSES`` or ``MIDDLEWARE``\n\n * Deprecates ``VinaigrettteAdminLanguageMiddleware`` for ``VinaigretteAdminLanguageMiddleware``\n\n * Users should change to ``vinaigrette.middleware.VinaigretteAdminLanguageMiddleware``\n * ``vinaigrette.VinaigrettteAdminLanguageMiddleware`` will continue to work until next major version\n\n* Adds tox and pytest for development and testing\n\n1.1.1\n-----\n\n* Update contact info\n\n1.1.0\n-----\n\n* Django 2.0 support\n\n1.0.1\n-----\n\n* Remembered to update version properly\n\n1.0.0\n-----\n\n* Add the ``--keep-vinaigrette-temp`` option which keeps the temporary file containing the generated list of translations\n* Added support for Django 1.9\n* Remove support for Django versions < 1.8\n\n0.5.0\n-----\n\n* Can specify properties to use instead of database field names in .register() function.\n\n0.4.0\n-----\n\n* Support for Django 1.7\n\n0.3.0\n-----\n\n* Support for python 3.3.\n\n0.2.0\n-----\n\n* Bug fix for the --all option, it now works again.\n* New VinaigrettteAdminLanguageMiddleware middleware.\n\n0.1.3\n-----\n\n* Support for Django 1.6.\n\n\n", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/ecometrica/django-vinaigrette/", "keywords": "django,translation,gettext,internationalization,i18n,database,model", "license": "", "maintainer": "", "maintainer_email": "", "name": "django-vinaigrette", "package_url": "https://pypi.org/project/django-vinaigrette/", "platform": "", "project_url": "https://pypi.org/project/django-vinaigrette/", "project_urls": { "Homepage": "https://github.com/ecometrica/django-vinaigrette/" }, "release_url": "https://pypi.org/project/django-vinaigrette/1.2.1/", "requires_dist": null, "requires_python": "", "summary": "Translate Django model data using gettext", "version": "1.2.1" }, "last_serial": 5492522, "releases": { "0.1.0": [ { "comment_text": "", "digests": { "md5": "9fc96051ec57f58a6dc4bc4888662281", "sha256": "324fd2048bfe99da4c40d41a7a2e00e40d4ecd8aaa7155dc1ff2f07a4c2be514" }, "downloads": -1, "filename": "django-vinaigrette-0.1.0.tar.gz", "has_sig": false, "md5_digest": "9fc96051ec57f58a6dc4bc4888662281", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3042, "upload_time": "2010-11-10T23:03:36", "url": "https://files.pythonhosted.org/packages/b1/6d/3630fa6d8e5692b96fea0981434dedc254de710abf53f07a7e0978c3e9e8/django-vinaigrette-0.1.0.tar.gz" } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "50466f2175daf2fab933e827aa80d804", "sha256": "a8be0c73035310dfb2d3dc0b6c877ed3a97f34510a2bb39182a482335b73bb09" }, "downloads": -1, "filename": "django-vinaigrette-0.1.1.tar.gz", "has_sig": false, "md5_digest": "50466f2175daf2fab933e827aa80d804", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5446, "upload_time": "2010-12-16T23:34:13", "url": "https://files.pythonhosted.org/packages/86/c0/95593953b98d2eb027d53ee7a9565ff4ce311c543016f94ceb07afbafd1d/django-vinaigrette-0.1.1.tar.gz" } ], "0.1.2": [ { "comment_text": "", "digests": { "md5": "c4ed7f539ad069c1150651e8214a9f85", "sha256": "be6a7fc3303e8634f7bd8fe72117f206862dae57577295115ce27cbaa572f4e2" }, "downloads": -1, "filename": "django-vinaigrette-0.1.2.tar.gz", "has_sig": false, "md5_digest": "c4ed7f539ad069c1150651e8214a9f85", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5437, "upload_time": "2013-12-18T19:23:11", "url": "https://files.pythonhosted.org/packages/18/55/7301367dd78e16574db0fc8c29b41fad97fdf25a27584fc5b67a6d7a7965/django-vinaigrette-0.1.2.tar.gz" } ], "0.1.3": [ { "comment_text": "", "digests": { "md5": "4265d2142747408ff1b2c30bf42d2271", "sha256": "79ed623a290c778f2e3b8714f58b37eb6916ffceb875f9d3efca8d6ce4d220ee" }, "downloads": -1, "filename": "django-vinaigrette-0.1.3.tar.gz", "has_sig": false, "md5_digest": "4265d2142747408ff1b2c30bf42d2271", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5501, "upload_time": "2014-04-04T21:28:58", "url": "https://files.pythonhosted.org/packages/44/e7/3038a695ea6b1f4bbf2389c5aa4dc3a1553aa950f5852d326498873a6217/django-vinaigrette-0.1.3.tar.gz" } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "17365946c9973dd70f87629b87a7b561", "sha256": "7a0d47a75ec22797a66b24af313b2b7353c67b39c8704a30d0e63daeb2fa24f5" }, "downloads": -1, "filename": "django-vinaigrette-0.2.0.tar.gz", "has_sig": false, "md5_digest": "17365946c9973dd70f87629b87a7b561", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6049, "upload_time": "2014-04-30T20:56:57", "url": "https://files.pythonhosted.org/packages/1b/33/8655acbcf945859be78f9b6849c67f8eb477d164d45fe39dc78875826129/django-vinaigrette-0.2.0.tar.gz" } ], "0.2.1": [ { "comment_text": "", "digests": { "md5": "f46b69ffb45802106bdf14f0fff5a0e2", "sha256": "56eab02ffae14416e75143120017ed0efb927f587dcafae9c9c855c17b938e3e" }, "downloads": -1, "filename": "django-vinaigrette-0.2.1.tar.gz", "has_sig": false, "md5_digest": "f46b69ffb45802106bdf14f0fff5a0e2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6014, "upload_time": "2014-05-01T14:59:12", "url": "https://files.pythonhosted.org/packages/b8/33/cfa71ac128a203042dfa80e286f1a7c0b5e120a4d7173aecda0e10990169/django-vinaigrette-0.2.1.tar.gz" } ], "0.3.0": [ { "comment_text": "", "digests": { "md5": "1427226f7d3d5d6de62d84e6b57fab51", "sha256": "915ff3bc2af0cd95f12fe8c62d71360d223617969f1302f02059840febe5fcdf" }, "downloads": -1, "filename": "django-vinaigrette-0.3.0.tar.gz", "has_sig": false, "md5_digest": "1427226f7d3d5d6de62d84e6b57fab51", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6154, "upload_time": "2014-07-31T14:57:27", "url": "https://files.pythonhosted.org/packages/25/88/5097046e2698a5155db10f74c1b6fe277489e8f32fa74b36dff619aefbf2/django-vinaigrette-0.3.0.tar.gz" } ], "0.4.0": [ { "comment_text": "", "digests": { "md5": "c249869d0b338384ee2a538dacff7714", "sha256": "c62e7159d7ed1a9368f7d908935be4ba1c9e7a10a0a0da15a52a789588048156" }, "downloads": -1, "filename": "django-vinaigrette-0.4.0.tar.gz", "has_sig": false, "md5_digest": "c249869d0b338384ee2a538dacff7714", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6268, "upload_time": "2015-03-18T12:58:49", "url": "https://files.pythonhosted.org/packages/2a/26/a9df165ce5cec5d9d95991a21d2fec4b7e0e1a46ebd90750a22e7a87f712/django-vinaigrette-0.4.0.tar.gz" } ], "0.5.0": [ { "comment_text": "", "digests": { "md5": "8e28568b0acfe5bc608ef3b1c47fce8d", "sha256": "82ac1f4da84307db07cf3f2578b0f6ae52283228fd053e7e56e9ce8e59d4f266" }, "downloads": -1, "filename": "django-vinaigrette-0.5.0.tar.gz", "has_sig": false, "md5_digest": "8e28568b0acfe5bc608ef3b1c47fce8d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6561, "upload_time": "2015-07-13T21:10:39", "url": "https://files.pythonhosted.org/packages/6f/7d/f22fe15559172b9c7f2816c9549dd6d1213f58e3a1b8020daa3b9019145c/django-vinaigrette-0.5.0.tar.gz" } ], "1.0.0": [ { "comment_text": "", "digests": { "md5": "156a3bd190d5891845c92bf69fb49f6c", "sha256": "9454f78b9c1b2995e66195d6e91be91463c6c76c90a431ee9b355097d27a598f" }, "downloads": -1, "filename": "django-vinaigrette-1.0.0.tar.gz", "has_sig": false, "md5_digest": "156a3bd190d5891845c92bf69fb49f6c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6654, "upload_time": "2016-02-03T17:01:14", "url": "https://files.pythonhosted.org/packages/95/39/a1485ec85ede0d265e314f6d8f59692d1d8a3a73a89385910fc949ba36fd/django-vinaigrette-1.0.0.tar.gz" } ], "1.0.1": [ { "comment_text": "", "digests": { "md5": "bab14e541b114ced27710aa4228dd29f", "sha256": "5713c3dcdae4082c16b804783e04ded66f71bc7420e37dde18f67a92b8455aeb" }, "downloads": -1, "filename": "django-vinaigrette-1.0.1.tar.gz", "has_sig": false, "md5_digest": "bab14e541b114ced27710aa4228dd29f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6667, "upload_time": "2016-03-21T16:04:47", "url": "https://files.pythonhosted.org/packages/53/b0/db0e5949bcbab76543f78563cdbecf63c365f3171dafbb56c53d85c8373f/django-vinaigrette-1.0.1.tar.gz" } ], "1.1.0": [ { "comment_text": "", "digests": { "md5": "4855299286230d7b175ecf166a1b6dd3", "sha256": "fe7188319bf32791b6b95be9ae4a84032e257f01d571d212904a4ea2affb1ce7" }, "downloads": -1, "filename": "django_vinaigrette-1.1.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "4855299286230d7b175ecf166a1b6dd3", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 9746, "upload_time": "2018-01-18T15:53:09", "url": "https://files.pythonhosted.org/packages/a3/e7/a95933afd5e3d32513bc5262fb9008a63140db7abf65c839a449790ae355/django_vinaigrette-1.1.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "12887c4b25caf20048cc5d7be2c89301", "sha256": "75b6fe53237fa2b5d6fe71f43628da0faea99fd310dfe691bd6d2a5b62b15015" }, "downloads": -1, "filename": "django-vinaigrette-1.1.0.tar.gz", "has_sig": false, "md5_digest": "12887c4b25caf20048cc5d7be2c89301", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6661, "upload_time": "2018-01-18T15:53:10", "url": "https://files.pythonhosted.org/packages/84/43/051c74fe1d19c84333d1256b87d2636dd1ca933d1eeb2812e381d20f749d/django-vinaigrette-1.1.0.tar.gz" } ], "1.1.1": [ { "comment_text": "", "digests": { "md5": "2a22dfbbf4207fb7e07765c442fbb2b1", "sha256": "218c179d3ab0c1adb2120fdc7dd83e6d672055c9788ca2e11a97ea012b2de178" }, "downloads": -1, "filename": "django_vinaigrette-1.1.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "2a22dfbbf4207fb7e07765c442fbb2b1", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 9756, "upload_time": "2018-01-18T16:17:21", "url": "https://files.pythonhosted.org/packages/99/be/c5ca9b0d0a13ddda157a9a7e736a94903dc72479851018f0eb16d3fb20ac/django_vinaigrette-1.1.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "eb65539193d3be6144556880b6059198", "sha256": "ec7b86d8b52f9c0e942580b2dcbf42724adc9342674ed43fe856bdaf9171dc3d" }, "downloads": -1, "filename": "django-vinaigrette-1.1.1.tar.gz", "has_sig": false, "md5_digest": "eb65539193d3be6144556880b6059198", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6661, "upload_time": "2018-01-18T16:17:23", "url": "https://files.pythonhosted.org/packages/b7/01/8730fe8597dee932f12f8690f0978655968db0259d5fdc6dd4c7bc6809b9/django-vinaigrette-1.1.1.tar.gz" } ], "1.2.0": [ { "comment_text": "", "digests": { "md5": "185850f8d3fd6b0e8f937617947f72c6", "sha256": "f238cd8ba1fe5010eb917c31b723296e25deeacd680398178472e27b8afd37a1" }, "downloads": -1, "filename": "django-vinaigrette-1.2.0.tar.gz", "has_sig": false, "md5_digest": "185850f8d3fd6b0e8f937617947f72c6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9453, "upload_time": "2019-01-10T16:26:34", "url": "https://files.pythonhosted.org/packages/10/26/e7ddb8f6b5fe30733c45c2ffa9aab2a00a49ca3c7ce4fc7f4d4ec84c3e3f/django-vinaigrette-1.2.0.tar.gz" } ], "1.2.0a0": [ { "comment_text": "", "digests": { "md5": "9f9eb264615bd38fb251faa4eb91bede", "sha256": "8dda43921b337d160ea0a9a3dd92cc010638180379152c8e5474b64970af7932" }, "downloads": -1, "filename": "django_vinaigrette-1.2.0a0-py2-none-any.whl", "has_sig": false, "md5_digest": "9f9eb264615bd38fb251faa4eb91bede", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 9336, "upload_time": "2018-07-24T10:26:25", "url": "https://files.pythonhosted.org/packages/13/ce/ebb4bdd2f28218298a7276467c2e32bef64b427c283ce3124148e2412ece/django_vinaigrette-1.2.0a0-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "a997cc7c21687fc9ecf9c52ee0571ac4", "sha256": "fdc599f5c65306a38eddb1e720fe49a0b36d107411bd2017383e5bc1543e0c74" }, "downloads": -1, "filename": "django-vinaigrette-1.2.0a0.tar.gz", "has_sig": false, "md5_digest": "a997cc7c21687fc9ecf9c52ee0571ac4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9456, "upload_time": "2018-07-24T10:26:27", "url": "https://files.pythonhosted.org/packages/46/6e/a8f725b0d4fd8baabdef52a84e3ee2eb30df9c03e71d87135fce29673a21/django-vinaigrette-1.2.0a0.tar.gz" } ], "1.2.1": [ { "comment_text": "", "digests": { "md5": "86b303d8dc6535b1925a8d9c99e30607", "sha256": "3375c4c178022badec5e00346f7571b16f0934f8fe697dc183ef88717a7696f7" }, "downloads": -1, "filename": "django_vinaigrette-1.2.1-py2-none-any.whl", "has_sig": false, "md5_digest": "86b303d8dc6535b1925a8d9c99e30607", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 14070, "upload_time": "2019-07-05T17:46:25", "url": "https://files.pythonhosted.org/packages/43/65/4e79a458331918559489024ebc60102256fcc62212f74f596ce8f2a37a26/django_vinaigrette-1.2.1-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "de4201d573e95cfb3c8dfc8163657cb3", "sha256": "084f4d777bb0077eb75e55ac01d669f035e87138f3628c3741ca57e4241d2877" }, "downloads": -1, "filename": "django-vinaigrette-1.2.1.tar.gz", "has_sig": false, "md5_digest": "de4201d573e95cfb3c8dfc8163657cb3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10227, "upload_time": "2019-07-05T17:46:27", "url": "https://files.pythonhosted.org/packages/38/4d/e0bc23f5017d2041a3d091b673810e0b0557f8c8f6f9b37d48e804d304cf/django-vinaigrette-1.2.1.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "86b303d8dc6535b1925a8d9c99e30607", "sha256": "3375c4c178022badec5e00346f7571b16f0934f8fe697dc183ef88717a7696f7" }, "downloads": -1, "filename": "django_vinaigrette-1.2.1-py2-none-any.whl", "has_sig": false, "md5_digest": "86b303d8dc6535b1925a8d9c99e30607", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 14070, "upload_time": "2019-07-05T17:46:25", "url": "https://files.pythonhosted.org/packages/43/65/4e79a458331918559489024ebc60102256fcc62212f74f596ce8f2a37a26/django_vinaigrette-1.2.1-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "de4201d573e95cfb3c8dfc8163657cb3", "sha256": "084f4d777bb0077eb75e55ac01d669f035e87138f3628c3741ca57e4241d2877" }, "downloads": -1, "filename": "django-vinaigrette-1.2.1.tar.gz", "has_sig": false, "md5_digest": "de4201d573e95cfb3c8dfc8163657cb3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10227, "upload_time": "2019-07-05T17:46:27", "url": "https://files.pythonhosted.org/packages/38/4d/e0bc23f5017d2041a3d091b673810e0b0557f8c8f6f9b37d48e804d304cf/django-vinaigrette-1.2.1.tar.gz" } ] }