Giter VIP home page Giter VIP logo

transifex-client's Introduction

Transifex Command-Line Tool

image image codecov PyPI version

The New Client ๐ŸŽ‰

We released a stable version of a new Transifex Client, compatible with the new API, and offered as single executable.

Please start using the new Transifex CLI here , since this software is considered deprecated (as of January 2022) and will sunset on Nov 30, 2022.

Getting started

Whether you have experience with the command line or not, this interactive tutorial is intended for everyone who wishes to learn how the Transifex client works. There is no need to download anything - Just click on the link provided above, and follow the instructions.

For more information about TX client, please visit our documentation guide here.

Description

The Transifex Command-line Tool enables you to manage your translations within a project without the need of an elaborate UI system.

You can use the command line tool to create new resources, map locale files to translations, and synchronize your Transifex project with your local repository. Translators and localization managers can use it to handle large volumes of translation files. The Transifex Command-line Tool can help to enable continuous integration workflows and can be run from CI servers like Jenkins and Bamboo.

Click here for complete documentation on the Transifex Command-line Tool via our documentation site.

Installation

You can install the latest version of transifex-client running pip install transifex-client or easy_install transifex-client.

Build transifex-client for Windows

  1. Download transifex-client sources via git or github archive.

    1. git clone https://github.com/transifex/transifex-client.git
    2. Download and unpack https://github.com/transifex/transifex-client/archive/master.zip
  2. Download and install Python.

    At this step choose the right version of python (2.7, 3.5, 3.6 or 3.7) and x86 or x86-64 instruction set.

    Make sure pip marked for installation(default for latest installers).

  3. Install PyInstaller.

    Suppose that Python installed to C:\\Program Files\\Python35-32

    Make python.exe accessible via PATH environment variable or cd to directory containing python.exe.

    python -m pip install pyinstaller
    

    This command will install PyInstaller package and its dependencies.

  4. Build transifex-client distribution.

    Change directory to transifex-client folder and run command:

    python -m PyInstaller contrib/tx.spec
    # or
    pyinstaller contrib/tx.spec
    
  5. tx.exe

    dist/tx.exe will be created as the result of build process.

Getting Help

You can always get additional help via GitHub issues or Transifex support

License

Transifex Client is primarily distributed under the terms of the GPL License (Version 2.0).

See LICENSE for details.

transifex-client's People

Contributors

akx avatar alup avatar amanatidis avatar apmats avatar candrikos avatar chrsmark avatar codegaze avatar coderanger avatar deathbird avatar diegobz avatar dimoschi avatar diontsoumas avatar fathineos avatar gerundt avatar igavriil avatar jezdez avatar kbairak avatar kouk avatar kroustou avatar ktomk avatar mkcello96 avatar mpessas avatar nelefth avatar ollandos avatar rigaspapas avatar sofiamargariti avatar stefanw avatar surkova avatar tabac avatar terencehonles avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

transifex-client's Issues

Unable to install development versions of transifex-client using pip&easy-install (HTTP404)

According to the readme file, it is possible to retrieve development versions using either sudo pip or sudo easy-install. I've tried running both commands, and ended up with HTTP 404 errors.

$ sudo pip install transifex-client==dev
Downloading/unpacking transifex-client==dev
  HTTP error 404 while getting http://code.indifex.com/transifex-client/get/tip.gz#egg=transifex-client-dev (from http://pypi.python.org/simple/transifex-client/)
  Could not install requirement transifex-client==dev because of error HTTP Error 404: Not Found
Could not install requirement transifex-client==dev because of HTTP error HTTP Error 404: Not Found for URL http://code.indifex.com/transifex-client/get/tip.gz#egg=transifex-client-dev (from http://pypi.python.org/simple/transifex-client/)
Storing complete log in /home/tomer/.pip/pip.log
$ sudo easy_install transifex-client==dev
Searching for transifex-client==dev
Reading http://pypi.python.org/simple/transifex-client/
Reading http://www.indifex.com
Reading https://www.transifex.com
Best match: transifex-client dev
Downloading http://code.indifex.com/transifex-client/get/tip.gz#egg=transifex-client-dev
error: Can't download http://code.indifex.com/transifex-client/get/tip.gz: 404 Not Found

Retrieving production builds seems to work well using pip and easy-install.

Client complains about transifex.net vs transifex.com

My ~/.transifexrc is set up to use transifex.com. When I try to pull translations, I get an error saying:

"Exception: No user credentials found for host https://www.transifex.net. Edit ~/.transifexrc and add the appropriate info in there."

I then edit the file and change .com to .net. I pull translations again and get this message:

"Hostname https://www.transifex.net should be changed to https://www.transifex.com.
Change it now? [Y/n]"

The default answer (Yes) will replace .net with .com, which takes you back to the error previously mentioned. Answering no seems to work too.

tx-client should be able to refresh its repo

Let's assume that you've tx set --auto-remote <project> the tx repo.
You pull translations, but one day, one maintainer have added a new projet or resource (slug) to the that you've set.
If you keep pulling translations, your .tx/config file will never be updated, you'll never be noticed about this change.

That would be really useful to have a tx update repo command in order to check the availability of each slug, on the local repo, and to add the new one created on remote.

This is particularly useful when the set project is in fact a transifex release, which is by definition moving a lot.

AndroidFileFormat: line ending (termination) differs between template & translation > \n instead of \r\n on windows systems

This is a sequel to transifex/transifex-old-core#123 , but unfortunetely I am not able to post a comment to the issue there and the issue itself is also more related to the transifex-client than transifex itself.

For introduction please read transifex/transifex-old-core#123

This is still an issue. We are working around it by applying a "fix" script to the language files after pulling the translations, nevertheless it would simplify the transifex preparation process for new plugin repositories created by our community plugin developers and also simplify the build scripts of the existing repositories.

\r\n should be used by default on windows files systems instead of \n only or maybe have it available as a commandline switch.

pull prints messages to stderr instead of stdout

Somewhere around 0.7.1 or .2 tx pull (-f) started to print po files to stderr instead of stdout, which is unexpected, since they're not related to any error condition.
This also happens when using tx -q

"tests" gets installed to dist-packages

The "tests" directory gets installed to dist-packages and overrides our local tests packages.

This forces us to manually remove tests/ from dist-utils, or do some path hackery.

pull apple string error

I install from source

user% git clone http://code.transifex.com/transifex-client
user% cd transifex-client
root# python setup.py install

Then try pull

chaotekiMacBook-Pro:GPSLogger chaohan$ tx init
tx: There is already a tx folder!
Do you want to delete it and reinit the project? [y/N]: y
Creating .tx folder...
Transifex instance [https://www.transifex.com]: 
Creating skeleton...
Creating config file...
Done.
chaotekiMacBook-Pro:GPSLogger chaohan$ tx set --auto-remote https://www.transifex.com/projects/p/chatsecure
Auto configuring local project from remote URL...
Getting details for project chatsecure
2 resources found. Configuring...
Configuring resource chatsecure.appstorestrings.
Configuring resource chatsecure.strings.
chaotekiMacBook-Pro:GPSLogger chaohan$ tx pull -a
New translations found for the following languages: el, bo, da_DK, vi, ca, it, nl_NL, ar, cs, id, es, ro_RO, ru, no, tr, sl_SI, pt_PT, pl, fr, hy, pt_BR, uz@Cyrl, zh_TW, hu, he, fa_IR, uz, zh_CN, sv, sk, de, sl
Pulling new translations for resource chatsecure.appstorestrings (source: None)
 -> el: translations/chatsecure.appstorestrings/el.strings
UnicodeDecodeError: 'utf8' codec can't decode byte 0xff in position 0: invalid start byte

expected string or buffer

Pushing new sources gives an exception.

dkocher$ tx --traceback  push --source --translations --force 
Pushing translations for resource cyberduck.Alert:
Warning: By using --force, the uploaded files will overwrite remote translations, even if they are newer than your uploaded files.
Are you sure you want to continue? [y/N] y
Pushing source file (en.lproj/Alert.strings)
Resource does not exist.  Creating...
Traceback (most recent call last):
  File "/usr/local/bin/tx", line 94, in main
    utils.exec_command(cmd, args[1:], path_to_tx)
  File "/Library/Python/2.7/site-packages/txclib/utils.py", line 170, in exec_command
    cmd_fn(*args,**kwargs)
  File "/Library/Python/2.7/site-packages/txclib/commands.py", line 336, in cmd_push
    no_interactive=options.no_interactive
  File "/Library/Python/2.7/site-packages/txclib/project.py", line 606, in push
    self._create_resource(resource, project_slug, fileinfo, filename)
  File "/Library/Python/2.7/site-packages/txclib/project.py", line 1218, in _create_resource
    return make_request(method, hostname, url, username, passwd, data)
  File "/Library/Python/2.7/site-packages/txclib/utils.py", line 101, in make_request
    raise Exception(data)
Exception: expected string or buffer

Colored output does not respect pipes

piping tx status to less produces the following output:

Translation Files:
 - ESC[0;31menESC[0m: N/A (ESC[0;33msourceESC[0m)

A check should be made to test if the stdout is color-capable

Make "--minimum-perc" consider the total status

Right now tx pull --all --minimum-perc=95 pulls all resources which are at least 95% complete.

However, if there are e.g. 50 resources and only one of them has been translated, the client will still pull it and create the language, even though the total translation is actually only 2% complete.

I would like to be able to pull only those translations which are 95% complete over all, like shown on the home page of my project.

Ignore files or language codes

Hi,

Unless I've missed something I can't find a way to ignore some files or language codes.

My use case is translating Android resources. In the Android world resources are stored in different folders, one per language code, for example:

  • res/values/strings.xml (Source file)
  • res/values-fr/strings.xml
  • res/values-ja/strings.xml
  • ...

That works great with the file filter system since you can use res/values-<lang>/strings.xml.

However Android also uses this suffix system for non language specifiers such as resources specifics to a SDK version (res/values-v11/strings.xml). When pushing translation this causes some errors (which hopefully can be --skiped.).

Another more generic use case is for some resources that are copied from other ones. For example in Norwegian the no resource is identical to nb, so in my build script I copy the values-nb folder to values-no. I'd like to ignore no when pushing translations.

Ideally a new setting in .tx/config would do, like ignore = no,v11.

Cheers,

Nico

transifex-client: insufficient CVE-2013-2073 fix

Commit e24ea95 (plus few follow up commits) was added to add verification of HTTPS certificate to avoid MITM attacks. The issue got CVE-2013-2073 assigned.

However, the fix is not really correct. The way it works is:

  • verify_ssl opens connection to the target host and verifies provided certificate, including name check
  • connection opened by verify_ssl is closed immediately
  • actual communication with the server is done via urllib2, which opens its own connection(s)

So the actual data is sent over unverified connections opened by urllib2. MITM attacker should be able to steal all transferred data by allowing "probe" connection opened by verify_ssl to connect to the real transifex server and only intercept subsequent urllib2 connection.

Make a release

There is a bug that I was hitting in the released version on pypi that is fixed in master on GitHub. You should make a new release that has this bug fix in it. Currently it is breaking the installation instructions for Sphinx (http://sphinx-doc.org/latest/intl.html#using-transifex-service-for-team-translation) -- The bug is that it is getting a 404 when trying to create new resources.

It seems like every new project will hit this bug, and a new release should be made.

Can't push resource

Hi,

I'm trying to push sources on Transifex for a new and empty project, however I get this error with the latest beta version:

> tx --traceback push -s                                  
Pushing translations for resource MySecureShell.index:
Pushing source file (build/locale/index.pot)
Resource does not exist.  Creating...
Traceback (most recent call last):
  File "/usr/local/bin/tx", line 94, in main
    utils.exec_command(cmd, args[1:], path_to_tx)
  File "/usr/local/lib/python2.7/dist-packages/txclib/utils.py", line 182, in exec_command
    cmd_fn(*args,**kwargs)
  File "/usr/local/lib/python2.7/dist-packages/txclib/commands.py", line 336, in cmd_push
    no_interactive=options.no_interactive
  File "/usr/local/lib/python2.7/dist-packages/txclib/project.py", line 606, in push
    self._create_resource(resource, project_slug, fileinfo, filename)
  File "/usr/local/lib/python2.7/dist-packages/txclib/project.py", line 1218, in _create_resource
    r, charset = make_request(method, hostname, url, username, passwd, data)
  File "/usr/local/lib/python2.7/dist-packages/txclib/utils.py", line 111, in make_request
    raise HttpNotFound(data)
HttpNotFound: Not Found

It doesn't work also with the previous beta and stable version. Any idea ?

Thanks

Can't seem to push translations

Transifex has been working great for us the last several months. I'm using the command-line tool with cygwin and have had no difficulty pulling translations and pushing the source. However, I can't seem to push translations with the command-line tool. It appears as though tx is not finding the translation files in the local filesystem. Here's what happens:

$ tx push -t
Pushing translations for resource mupen64plus-ae.menu-strings:
Pushing translations for resource mupen64plus-ae.market-listing:
Done.

Using the -f flag doesn't change the result. By comparison, here's the output from pull:

$ tx pull -a
New translations found for the following languages: ru,fr, pt, hr, ca, de, tr, it, es, gl, ja, pl
Pulling new translations for resource mupen64plus-ae.menu-strings (source: ./res/values/strings.xml)
 -> ru: res/values-ru/strings.xml
 -> fr: res/vaules-fr/strings.xml
[etc.... same for the other resources]
Done.

Although curiously, it always says "New translations found" and pulls everything, even when nothing has actually changed. Perhaps related to the same issue. And finally here's my config file:

[main]
host = https://www.transifex.com

[mupen64plus-ae.menu-strings]
file_filter = ./res/values-<lang>/strings.xml
source_file = ./res/values/strings.xml
source_lang = en
type = ANDROID
minimum_perc = 80

[mupen64plus-ae.market-listing]
file_filter = ./doc/publish/listing-<lang>.txt
source_file = ./doc/publish/listing.txt
source_lang = en
type = TXT
minimum_perc = 80

Which python version supported?

Version 0.8 supported python-2.5, but 0.9 did not support python-2.5 with no announce.
0.8 and 0.9 are not supported python3.

Please indicate support python version in PyPI page (set classifiers by setup.py).

Allow for specification of config file.

Right now the client always picks .tx/config. It would be great to have the option to specify the config file to use as a command line option such as --config=<path> or -c <path>

RFE: ability to export a project's translations

Can Transifex be enhanced with a feature that allows translations for a project to be exported, or saved all at once?

The use case is that, ideally, Red Hat would be able to re-use Fedora translations for RHEL documentation. Because Red Hat uses Zanata, this can currently only be done if both projects are on Zanata. If Transifex offered this functionality, cross-platform work will become possible.

Add option to not include e-mail addresses

Some projects prefer to not include e-mail addresses in their translation files for various reasons. Being able to simply use a command line switch/option to tx pull, or perhaps even a setting in the configuration, would make this process a lot smoother than having to postprocess the translation files after having been pulled.

Pull functionality crashing when server has no resource created

If you attempt to sync a local repository of translation files to server, the client always quits with: "Exception: Not Found" error. This only happens when there is no resource on server already created, but according to the code in project.py, it should go through with next code, when HttpNotFound exception is raised.

def _get_stats_for_resource(self):
        """Get the statistics information for a resource."""
        try:
            r = self.do_url_request('resource_stats')
            logger.debug("Statistics response is %s" % r)
            stats = parse_json(r)
        except HttpNotFound:
            logger.debug("Resource not found, creating now... ")
            stats = {}
        except ssl.SSLError:
            logger.error("Invalid SSL certificate")
            raise
        except Exception, e:
            logger.debug(unicode(e))
            raise
        return stats

However the call always gets thrown into the Exception block, meaning the program never gets past the first source file. Either raise should be removed or HttpNotFound exception should be modified to respond correctly to the server Not Found reply.

tx client misses translation updates when used with version control

Currently, tx relies on files' timestamps when deciding whether to pull the latest or not. When used in conjunction with version control such as git (with the translations are stored in the repository), this mechanism breaks since files that are updated have the date of the checkout, not the date that they were originally created.

This creates a problem. Consider this timeline:

1:00: Alice creates a translation for 'widget'.
2:00: Bob pulls translations and puts them in git.
3:00: Alice modifies the translation for 'widget'.
4:00: Charlie makes a clone of the git repo.
      The new 'widget' translation now has a timestamp for 4:00.
4:15: Charlie does "tx pull -a". Since the 'widget's timestamp is 4:00
      but the server timestamp is 3:00, it does not get updated.
4:30: Charlie publishes a release, missing Alice's updated translation.

A workaround for this is to use the -f switch, which results in all the translations being re-downloaded. For us, this takes over 30 minutes(!) on a decent-speed connection.

ValueError: No JSON object could be decoded

I was following the instructions after installing the 0.10 version of the client using pip.

Got the following:

d:tx Daniel$ tx set --auto-remote https://www.transifex.com/projects/p/project/
Auto configuring local project from remote URL...
Getting details for project project
ValueError: No JSON object could be decoded

The project name has been disclosed.

Tried this on another machine which has the 0.8 version of the client and on that machine the same command against the same project was successful.

delete translations

I'd like to be able to delete translations (not resource files) with the transifex client. I'm using the .ini file format, and when I push a file with only an empty translation (a line with only key=), I get the following error:

Exception: Remote server replied: Could not import file: We're not able to extract any string from the file uploaded for language English (en) in resource Dungeon Crawl: Stone Soup: species.

However, using the web interface I can delete each translation individually and it works. Could the same functionality be added to the client? Does it already work with another file format?

Thanks.

Add a "post pull" hook or setting

Adding a config option or some other way to run a command following a hook would be useful for e.g. automatically compiling message catalogues after having pulled them.

For example:

[project.resource]
file_filter = translations/<lang>/LC_MESSAGES/messages.po
source_file = project.pot
source_lang = en
post_pull_cmd = pybabel compile -d translations/

Unable to use behind http proxy since 0.8

I was using the version 0.8 client,

and i keep receiving the mail about my outdated version of the client,
so i decided to upgrade to the 0.10.

But then i was unable to pass my http proxy at work.

i have my env set as :
export http_proxy="192......:3128"
export https_proxy="192......:3128"

but it does not change anything...
i get stuck after the "pushing translations for ...."

Support for fr_BE locale

I work for a Belgium company and french is an official language in Belgium. Is it possible to support translations for fr_BE?

Wrong <lang> when resource is region specific

It would be nice if transifex api would provide the correct region name in <lang> placeholder for android.

[android.strings]
source_lang = en
source_file = src/main/res/values/strings.xml
file_filter = src/main/res/values-<lang>/strings.xml
type = ANDROID

according to: http://developer.android.com/guide/topics/resources/providing-resources.html#AlternativeResources

The proper path for string resources would be: values-[locale]-r[region]
Which makes it reasonable for <lang> to be replaced by [locale]-r[region]. But this is not the case and it actually is: [locale]_[region] which is useless for android.

Exception: Not found

I have in my config file some sources like this:

[main]
host = https://www.transifex.com
type = PO

[xxx.issues]
file_filter = locale/<lang>/LC_MESSAGES/issues.po
source_file = locale/pot/issues.pot
source_lang = en

However when I executer tx push -s I only get this exception, but no useful information. The pot file exists in the current_dir/locale/issues.pot

How can I debug more?

transifex-client ignores completed translations for DTD resources

The Spanish translation of the Tor Launcher resources is 100% translated, but I am unable to pull it from the server.

The configuration file I have includes "minimum_perc = 100". When I run "tx pull" in that directory, I see a message saying "Skipping 'es' translation (file: es/network-settings.dtd)".

Am I missing anything? Shouldn't the transifex-client now pull all translations which are 100% completed?

Can push source plain text file

Hi, I can't push a plain text file. I might miss something or it could be a bug.

I'm using https://pypi.python.org/pypi/transifex-client/0.11.1.beta (same problem with stable version 1.0)

Relevant tx config section

[description.txt]
file_filter = description/description_<lang>.txt
source_file = description/description_en.txt
source_lang = en
type = TXT

in the root of my project

$ ls description/
description_en.txt  description_fr.txt

And here is the problem

$ tx -d --traceback  push -r description.txt -s

Output

Path to tx is /Users/username/myproject.
Config file is /Users/username/myproject/.tx/config
.transifexrc file is at /Users/username
.transifexrc file is at /Users/username/myproject
Operating on resources: ['description.txt']
Language mapping is: Flipdict({})
Using host https://www.transifex.com
Pushing translations for resource description.txt:
Resource not found, creating...
Pushing source file (description/description_en.txt)
Resource does not exist.  Creating...
Traceback (most recent call last):
  File "/usr/local/bin/tx", line 94, in main
    utils.exec_command(cmd, args[1:], path_to_tx)
  File "/Library/Python/2.7/site-packages/txclib/utils.py", line 182, in exec_command
    cmd_fn(*args,**kwargs)
  File "/Library/Python/2.7/site-packages/txclib/commands.py", line 336, in cmd_push
    no_interactive=options.no_interactive
  File "/Library/Python/2.7/site-packages/txclib/project.py", line 606, in push
    self._create_resource(resource, project_slug, fileinfo, filename)
  File "/Library/Python/2.7/site-packages/txclib/project.py", line 1218, in _create_resource
    r, charset = make_request(method, hostname, url, username, passwd, data)
  File "/Library/Python/2.7/site-packages/txclib/utils.py", line 111, in make_request
    raise HttpNotFound(data)
HttpNotFound: Not Found

Verify SSL certificates

The transifex-client doesn't validate https host certificates. This is an issue with urllib2, the library we use.

We could either move to python3 or use the requests package.

Failure pushing UTF-16 files with BOM

There is an issue with a character in a file when pushing the file. Couldn't find out which line is the culprit.

Exception: 'ascii' codec can't encode character u'\u0437' in position 76: ordinal not in range(128)

Ability to have changelog

For example I want to have a log:

tx log -l fr

resulting in:

2013/08/13 08:30 - GeekShadow updated string: foo.bar

Projects with large numbers of file and long filenames cannot be pushed or pulled

I maintain the Fedora Installation Guide and Installation Quick Start Guide, and last year we had to move translation to another platform because of insurmountable difficulties with Transifex.

There are two problems:

  1. Transifex can't seem to handle the long filenames that the sheer size of the Installation Guide necessitates, so we would have to maintain some kind of mapping between the filename and the Transifex module names. This would require a massive amount of manual handling.

One example of a long filename in the guide: Specialized_Storage_Devices_common-variablelist-1.xml

  1. Pushing and pulling the 800+ small files that comprise the Installation Guide across the 20+ languages that we have partial translations for is prohibitive as the connection keeps failing. Only 368 files are currently in the Transifex project.

https://fedora.transifex.com/projects/p/fedora-install-guide/

Can the limitations on filename length and the number of files be extended so that Transifex can accept a project of this size?

POT files with no entries in config: auto-create / update config file entries

A feature request based on the previous discussion in:

#25

An example of the POT file directory:

http://git.fedorahosted.org/cgit/docs/install-guide.git/tree/pot?h=f18

Pasting the relevant comments here:

The tx client could feature a command which would find any POT
files with no entries in the config file etc, and/or auto-create config file entries based on the POT file location in the directory structure.

Given the huge number of source POT files in the IG project, we really seem to need such a feature to make the project reasonably manageable for IG maintainers.

[mpessas] Lastly, regarding the update of the configuration file, we could have
a set --update-local option that tries to update the .tx/config
file with new files in the directory.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.