{ "info": { "author": "Paylogic International", "author_email": "developers@paylogic.com", "bugtrack_url": null, "classifiers": [], "description": "traduki: SQLAlchemy internationalisation\n========================================\n\nThe ``traduki`` package provides internationalisation helper classes for SQLAlchemy-based projects.\n\n.. image:: https://api.travis-ci.org/paylogic/traduki.png\n :target: https://travis-ci.org/paylogic/traduki\n.. image:: https://img.shields.io/pypi/v/traduki.svg\n :target: https://crate.io/packages/traduki/\n.. image:: https://coveralls.io/repos/paylogic/traduki/badge.png?branch=master\n :target: https://coveralls.io/r/paylogic/traduki\n\n\nInstallation\n------------\n\n.. sourcecode::\n\n pip install traduki\n\n\nUsage\n-----\n\ntraduki usage example:\n\n.. code-block:: python\n\n from sqlalchemy.ext.declarative import declarative_base\n\n Base = declarative_base()\n\n import traduki\n\n def get_current_language():\n \"\"\"Current language callback for our project.\"\"\"\n return request.locale\n\n def get_language_chain():\n \"\"\"Language chain (fallback rule) callback for our project.\"\"\"\n return {'*': request.locale}\n\n i18n_attributes = traduki.initialize(Base, ['en', 'ru'], get_current_language, get_language_chain)\n\n Session = sessionmaker(bind=engine)\n sess = Session()\n\n class MyModel(Base)\n\n title_id = i18n_attributes.i18n_column(nullable=False, unique=False)\n title = i18n_attributes.i18n_relation(title_id)\n \"\"\"Title.\"\"\"\n\n my_object = MyModel()\n my_object.title = {'en': 'English title', 'pt': 'Portugese title'}\n sess.add(my_object)\n sess.commit()\n\n assert sess.refresh(my_object).title.get_dict() == {'en': 'English title', 'pt': 'Portugese title'}\n\n\nContact\n-------\n\nIf you have questions, bug reports, suggestions, etc. please create an issue on\nthe `GitHub project page `_.\n\n\nLicense\n-------\n\nThis software is licensed under the `MIT license `_\n\nSee `License `_\n\n\n\u00a9 2018 Paylogic International.\n\nChangelog\n=========\n\n1.2.0\n-----\n\n* Do not use deprecated AttributeExtension, use Attribute Events instead.\n\n1.1.0\n-----\n\n* Use an OR operator for LIKE_OPS to find matches in all language columns.\n\n1.0.1\n-----\n\n* Fix `get_text_from_dict` raising an exception when no language can be detected.\n\n1.0.0\n-----\n\n* Initial public release", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/paylogic/traduki", "keywords": "sqlalchemy i18n internationalisation", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "traduki", "package_url": "https://pypi.org/project/traduki/", "platform": "", "project_url": "https://pypi.org/project/traduki/", "project_urls": { "Homepage": "https://github.com/paylogic/traduki" }, "release_url": "https://pypi.org/project/traduki/1.2.0/", "requires_dist": null, "requires_python": "", "summary": "SQLAlchemy internationalisation", "version": "1.2.0" }, "last_serial": 5395790, "releases": { "1.0.0": [ { "comment_text": "", "digests": { "md5": "f36759f27229d9f4db5e144962008457", "sha256": "bb234e96d9a485e194809dc3eb70bc00993a88c2f8cc52a74a50c8ba56dd17c1" }, "downloads": -1, "filename": "traduki-1.0.0.tar.gz", "has_sig": false, "md5_digest": "f36759f27229d9f4db5e144962008457", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6105, "upload_time": "2014-04-09T13:39:58", "url": "https://files.pythonhosted.org/packages/97/a9/bb55911f97f86fdada69600a0dd7a8fece63bbf4c62667f071d32ceda6e4/traduki-1.0.0.tar.gz" } ], "1.0.1": [ { "comment_text": "", "digests": { "md5": "e14df646389c8d60551db0e70822951b", "sha256": "72d2ebec3a802319a8d3067ada55bf4b4f2435a4e82c4fd3f7d38cc3d18819e8" }, "downloads": -1, "filename": "traduki-1.0.1.tar.gz", "has_sig": false, "md5_digest": "e14df646389c8d60551db0e70822951b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5974, "upload_time": "2018-04-12T08:47:54", "url": "https://files.pythonhosted.org/packages/4c/ad/ed8a93fde1dce22cbf83eda9b861fc983acd7d7cc4a61f892baf9bebe2b7/traduki-1.0.1.tar.gz" } ], "1.1.0": [ { "comment_text": "", "digests": { "md5": "545a091f6a2eb77f2a5e683b82cbb907", "sha256": "6181bb25ee03024de038a671f9667de77a26eccbd48c67ac7636a80d100f6bcc" }, "downloads": -1, "filename": "traduki-1.1.0.tar.gz", "has_sig": false, "md5_digest": "545a091f6a2eb77f2a5e683b82cbb907", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6014, "upload_time": "2018-11-14T10:03:57", "url": "https://files.pythonhosted.org/packages/ad/19/649c01c04102b6576601a599205a0fa1b7fb76e14132c25d2fa657292413/traduki-1.1.0.tar.gz" } ], "1.2.0": [ { "comment_text": "", "digests": { "md5": "b264c91c52bc022f4feaa76d5edf3fb8", "sha256": "521d24073de1769fdcd78d1611230f845f91c9b1c4a63d8e448db58ca7043e7b" }, "downloads": -1, "filename": "traduki-1.2.0.tar.gz", "has_sig": false, "md5_digest": "b264c91c52bc022f4feaa76d5edf3fb8", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6285, "upload_time": "2019-06-13T12:50:16", "url": "https://files.pythonhosted.org/packages/76/5a/2074ace042854d0f93b30249aca600eeb2a417da2965e2f84aa493fb90e1/traduki-1.2.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "b264c91c52bc022f4feaa76d5edf3fb8", "sha256": "521d24073de1769fdcd78d1611230f845f91c9b1c4a63d8e448db58ca7043e7b" }, "downloads": -1, "filename": "traduki-1.2.0.tar.gz", "has_sig": false, "md5_digest": "b264c91c52bc022f4feaa76d5edf3fb8", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6285, "upload_time": "2019-06-13T12:50:16", "url": "https://files.pythonhosted.org/packages/76/5a/2074ace042854d0f93b30249aca600eeb2a417da2965e2f84aa493fb90e1/traduki-1.2.0.tar.gz" } ] }