Coder Social home page Coder Social logo

text-translator's Introduction

Looking for maintainer

Hi all, I'm happy to maintain this repository but I cannot work on it much as I am not using the Gnome desktop anymore. I did not write this thing myself, I just kinda hacked it so it could still work after the creator abandoned it. If you want to manage this repo, open an issue :)

Text Translator

Translation of the text by different translators (currently Google.Translate, Yandex.Translate).

Installing translate-shell

This extension needs the package translate-shell.
Also, make sure you have the following dependencies installed:
sudo apt install gir1.2-clutter-1.0 gir1.2-clutter-gst-3.0 gir1.2-gtkclutter-1.0

Install translate-shell

cd /usr/bin
sudo wget https://git.io/trans
sudo chmod a+x trans

For full install instructions see translate-shell#installation. If you have trouble using translate-shell, make sure your version of translate-shell is over 0.9.5-1, otherwise it might cause issues.

Installation

Go on the Text Translator extension page, click on the switch ("OFF" => "ON"), click on the install button. That's it !

Shortcuts

<Super> T - open translator dialog.
<Super> <Shift> T - open translator dialog and translate text from clipboard.
<Super> <Alt> T - open translator dialog and translate from primary selection (requires xclip). <Ctrl> <Enter> - translate text.
<Ctrl> <Shift> C - copy translated text to clipboard.
<Ctrl> S - swap languages.
<Ctrl> D - reset languages to default.
<Tab> - toggle transliteration of result text.

Screenshots

Dialog

Translator Language chooser

Settings

Main settings Translators settings Keybindings

text-translator's People

Contributors

akrah avatar anassahmed avatar armonge avatar awamper avatar gufoe avatar juangl avatar prahal avatar relaxeaza avatar starccy avatar uhon avatar woodywizard 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

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

text-translator's Issues

Found great alternative

I have become addicted to this extension, I use it every day at work. That's why it was a blow for me when I upgraded ubuntu from 20.04 to 22.04 and the translator stopped working. At the same time, I understand that the maintenance of such software is very difficult, I do not have the capacity to offer help.
But for people like me, I found a great solution that completely replaces the text-translator:

https://crow-translate.github.io
image

image

Shortcuts are not working

Issue

I just installed your extension and my first impression is wow!
However, some shortcuts are not working.

Copy

More precisely, the CTRL+SHIFT+C to copy the translated text keeps copying the original text instead of the translated one. I did not look at your code, but you may ensure it takes the right panel text no matter what was the first language used (may produce a bug after language switching).

Toggle transliteration of the result

The TAB shortcut which is supposed to toggle the transliteration of the result has simply no effect.

Not working on Fedora 30

I cannot get this to work on Fedora 30 / Gnome 3.32.2. I get the big fat ERROR label upon installation from extensions.gnome.org.

I have translate-shell, clutter, clutter-gst3 and clutter-gtk installed. Am I missing some dependencies?

Esc key is forwardded to other apps (eg fulscreen firefox)

Hello,

It looks like default close window key - escape - is also "forwarded" to opened Firefox in video full screen mode. So close text-translator window when watching netflix causes close full screen.
Close window with mouse works OK - Firefox stays in video full screen mode, but it is not convenient solution.

In properties cannot be changed key assigned to close window, also alt+f4 is not working at all...
Please add function to reassign close window key or perhaps change close behaviour with escape key to be compatible with firefox video full screen.

Fedora 27, Gnome 3.26.2, text-translator version unknown - probably v31 (installed from FedoraAppStore [gnome-software] but there is no info about version; application itself also do not provide version info in GUI or preferences)

Best Regards,
Daniel

Translation with Google Translator doesn't works

I saw an related issue. I just want to add that I'm getting another error message.

Error executing translate-shell: GLib.SpawnError: Failed to execute child process "trans" (No such file or directory)
screenshot from 2017-01-08 19-11-58

I'm running Archlinux.

lots of messages in journalctl

I am using the extension on opensuse Tumbleweed (right now on GNOME 3.30), and everytime I use it, I get a lot of stack traces in journalctl:

mrt 28 10:32:43 Some code accessed the property 'REMEMBER_LAST_TRANSLATOR_KEY' on the module 'prefs_keys'. That property was defined with 'let' or 'const' inside the module. This was previously supported, but is not correct according to the ES6 standard. Any symbols to be exported from a module must be defined with 'var'. The property access will work as previously for the time being, but please fix your code anyway.
mrt 28 10:32:43 Some code accessed the property 'LAST_TRANSLATOR_KEY' on the module 'prefs_keys'. That property was defined with 'let' or 'const' inside the module. This was previously supported, but is not correct according to the ES6 standard. Any symbols to be exported from a module must be defined with 'var'. The property access will work as previously for the time being, but please fix your code anyway.
mrt 28 10:32:43 gnome-shell[3730]: Some code accessed the property 'TYPE_SOURCE' on the module 'languages_stats'. That property was defined with 'let' or 'const' inside the module. This was previously supported, but is not correct according to the ES6 standard. Any symbols to be exported from a module must be defined with 'var'. The property access will work as previously for the time being, but please fix your code anyway.
mrt 28 10:32:43 gnome-shell[3730]: Some code accessed the property 'TYPE_TARGET' on the module 'languages_stats'. That property was defined with 'let' or 'const' inside the module. This was previously supported, but is not correct according to the ES6 standard. Any symbols to be exported from a module must be defined with 'var'. The property access will work as previously for the time being, but please fix your code anyway.
mrt 28 10:32:43 gnome-shell[3730]: Some code accessed the property 'WIDTH_PERCENTS_KEY' on the module 'prefs_keys'. That property was defined with 'let' or 'const' inside the module. This was previously supported, but is not correct according to the ES6 standard. Any symbols to be exported from a module must be defined with 'var'. The property access will work as previously for the time being, but please fix your code anyway.
mrt 28 10:32:43 gnome-shell[3730]: Some code accessed the property 'HEIGHT_PERCENTS_KEY' on the module 'prefs_keys'. That property was defined with 'let' or 'const' inside the module. This was previously supported, but is not correct according to the ES6 standard. Any symbols to be exported from a module must be defined with 'var'. The property access will work as previously for the time being, but please fix your code anyway.
mrt 28 10:32:51 gnome-shell[3730]: Object St.BoxLayout (0x555ef7ff1ab0), has been already deallocated — impossible to access it. This might be caused by the object having been destroyed from C code using something such as destroy(), dispose(), or remove() vfuncs.
mrt 28 10:32:51 org.gnome.Shell.desktop[3730]: == Stack trace for context 0x555ef4d841e0 ==
mrt 28 10:32:51 org.gnome.Shell.desktop[3730]: #0   555ef74f1170 i   /home/BOMA/praets/.local/share/gnome-shell/extensions/[email protected]/buttons_bar.js:153 (7f0a12e5ee50 @ 55)
mrt 28 10:32:51 org.gnome.Shell.desktop[3730]: #1   7ffd6d5d70f0 b   resource:///org/gnome/gjs/modules/_legacy.js:82 (7f0a483bdb80 @ 71)
mrt 28 10:32:51 org.gnome.Shell.desktop[3730]: #2   7ffd6d5d71a0 b   /home/BOMA/praets/.local/share/gnome-shell/extensions/[email protected]/buttons_bar.js:248 (7f0a12e60820 @ 61)
mrt 28 10:32:51 org.gnome.Shell.desktop[3730]: #3   7ffd6d5d7260 b   resource:///org/gnome/gjs/modules/_legacy.js:82 (7f0a483bdb80 @ 71)
mrt 28 10:32:51 org.gnome.Shell.desktop[3730]: #4   555ef74f10f0 i   /home/BOMA/praets/.local/share/gnome-shell/extensions/[email protected]/languages_buttons.js:61 (7f0a12e60b80 @ 22)
mrt 28 10:32:51 org.gnome.Shell.desktop[3730]: #5   7ffd6d5d8380 b   resource:///org/gnome/gjs/modules/_legacy.js:82 (7f0a483bdb80 @ 71)
mrt 28 10:32:51 org.gnome.Shell.desktop[3730]: #6   555ef74f1070 i   /home/BOMA/praets/.local/share/gnome-shell/extensions/[email protected]/languages_buttons.js:72 (7f0a12e60ca0 @ 30)
mrt 28 10:32:51 org.gnome.Shell.desktop[3730]: #7   7ffd6d5d94b0 b   resource:///org/gnome/gjs/modules/_legacy.js:82 (7f0a483bdb80 @ 71)
mrt 28 10:32:51 org.gnome.Shell.desktop[3730]: #8   555ef74f0fc8 i   /home/BOMA/praets/.local/share/gnome-shell/extensions/[email protected]/extension.js:354 (7f0a12e4ddc0 @ 143)
mrt 28 10:32:51 org.gnome.Shell.desktop[3730]: #9   7ffd6d5da5e0 b   resource:///org/gnome/gjs/modules/_legacy.js:82 (7f0a483bdb80 @ 71)
mrt 28 10:32:51 org.gnome.Shell.desktop[3730]: #10   7ffd6d5da6a0 b   self-hosted:981 (7f0a38401040 @ 414)
mrt 28 10:32:51 org.gnome.Shell.desktop[3730]: #11   7ffd6d5da790 b   resource:///org/gnome/gjs/modules/signals.js:128 (7f0a483ce8b0 @ 386)
mrt 28 10:32:51 org.gnome.Shell.desktop[3730]: #12   555ef74f0f28 i   /home/BOMA/praets/.local/share/gnome-shell/extensions/[email protected]/languages_stats.js:82 (7f0a12e6f940 @ 77)
mrt 28 10:32:51 org.gnome.Shell.desktop[3730]: #13   7ffd6d5db8b0 b   resource:///org/gnome/gjs/modules/_legacy.js:82 (7f0a483bdb80 @ 71)
mrt 28 10:32:51 org.gnome.Shell.desktop[3730]: #14   555ef74f0e80 i   /home/BOMA/praets/.local/share/gnome-shell/extensions/[email protected]/languages_stats.js:49 (7f0a12e6f700 @ 186)
mrt 28 10:32:51 org.gnome.Shell.desktop[3730]: #15   7ffd6d5dc9f0 b   resource:///org/gnome/gjs/modules/_legacy.js:82 (7f0a483bdb80 @ 71)
mrt 28 10:32:51 org.gnome.Shell.desktop[3730]: #16   555ef74f0dd8 i   /home/BOMA/praets/.local/share/gnome-shell/extensions/[email protected]/extension.js:541 (7f0a12e50430 @ 127)
mrt 28 10:32:51 org.gnome.Shell.desktop[3730]: #17   7ffd6d5ddb20 b   resource:///org/gnome/gjs/modules/_legacy.js:82 (7f0a483bdb80 @ 71)
mrt 28 10:32:51 org.gnome.Shell.desktop[3730]: #18   555ef74f0d20 i   /home/BOMA/praets/.local/share/gnome-shell/extensions/[email protected]/extension.js:862 (7f0a12e52160 @ 67)
mrt 28 10:32:51 org.gnome.Shell.desktop[3730]: #19   7ffd6d5dec40 b   resource:///org/gnome/gjs/modules/_legacy.js:82 (7f0a483bdb80 @ 71)
mrt 28 10:32:51 org.gnome.Shell.desktop[3730]: #20   7ffd6d5decf0 b   self-hosted:979 (7f0a38401040 @ 393)
[text-translator-journalctl.log](https://github.com/gufoe/text-translator/files/3017183/text-translator-journalctl.log)

Don't work shortcut <Ctrl> S for swap language

text-translator from ~master

% uname -sr
Linux 4.15.17-200.fc26.x86_64
% gnome-shell --version
GNOME Shell 3.24.3

In settings window (from tweak tools) no switch language shortcut, only

  • Open translator dialog Super+T
  • Translate from clipboard Shift+Super+T
  • Translate from primary selection Alt+Super+T

Text Translator not installed

Hello,
The Chrome plugin does not load the plugin by writing the following text.

SyntaxError: JSON.parse: expected double-quoted property name

Stack trace:
TranslationProviderPrefs<._load_prefs@/home/erhan/.local/share/gnome-shell/extensions/[email protected]/translation_provider_base.js:107
wrapper@resource:///org/gnome/gjs/modules/lang.js:178
TranslationProviderPrefs<._init@/home/erhan/.local/share/gnome-shell/extensions/[email protected]/translation_provider_base.js:100
wrapper@resource:///org/gnome/gjs/modules/lang.js:178
_Base.prototype._construct@resource:///org/gnome/gjs/modules/lang.js:110
Class.prototype._construct/newClass@resource:///org/gnome/gjs/modules/lang.js:213
TranslationProviderBase<._init@/home/erhan/.local/share/gnome-shell/extensions/[email protected]/translation_provider_base.js:219
wrapper@resource:///org/gnome/gjs/modules/lang.js:178
_parent@resource:///org/gnome/gjs/modules/lang.js:131
Translator<._init@/home/erhan/.local/share/gnome-shell/extensions/[email protected]/translation_providers/google_translation_provider.js:13
wrapper@resource:///org/gnome/gjs/modules/lang.js:178
_Base.prototype._construct@resource:///org/gnome/gjs/modules/lang.js:110
Class.prototype._construct/newClass@resource:///org/gnome/gjs/modules/lang.js:213
TranslatorsManager<._load_translators@/home/erhan/.local/share/gnome-shell/extensions/[email protected]/translators_manager.js:37
wrapper@resource:///org/gnome/gjs/modules/lang.js:178
TranslatorsManager<._init@/home/erhan/.local/share/gnome-shell/extensions/[email protected]/translators_manager.js:18
wrapper@resource:///org/gnome/gjs/modules/lang.js:178
_Base.prototype._construct@resource:///org/gnome/gjs/modules/lang.js:110
Class.prototype._construct/newClass@resource:///org/gnome/gjs/modules/lang.js:213
TextTranslatorPrefsWidget<._get_main_page@/home/erhan/.local/share/gnome-shell/extensions/[email protected]/prefs.js:576
wrapper@resource:///org/gnome/gjs/modules/lang.js:178
TextTranslatorPrefsWidget<._init@/home/erhan/.local/share/gnome-shell/extensions/[email protected]/prefs.js:546
wrapper@resource:///org/gnome/gjs/modules/lang.js:178
buildPrefsWidget@/home/erhan/.local/share/gnome-shell/extensions/[email protected]/prefs.js:703
Application<._selectExtension@resource:///org/gnome/shell/extensionPrefs/main.js:95
wrapper@resource:///org/gnome/gjs/modules/lang.js:178
Application<._onCommandLine@resource:///org/gnome/shell/extensionPrefs/main.js:259
wrapper@resource:///org/gnome/gjs/modules/lang.js:178
main@resource:///org/gnome/shell/extensionPrefs/main.js:397
@

:1

The list of languages is not displayed

I am on a fresh installation of Ubuntu 20.10. When I want to select the languages, either in the form or the target, it does not display the list of possibilities. Only, English and Russian are by default, and actually, it works.
I have installed the following packages: translate-shell, gir1.2-clutter-1.0, gir1.2-clutter-gst-3.0, gir1.2-gtkclutter-1.0

image

does not work in ububntu 18.10

Error: Please make sure both gawk and translate-shell are installed. Error: GLib.SpawnError: Не удалось выполнить процесс-потомок «trans» (Нет такого файла или каталога)
2018-12-06 08-12-18

Not able to quit extension

Hi,
I'm running Gnome 3.36 and with the latest extension I'm able to get from extensions.gnome.org I'm not able to quit this extension by pressing anything except clicking on quit button with my mouse. Keyboard bindings are simply not working anymore for quitting the session.
Can you have a look please?

Scrolling does not work

Hi,

Thank you for this amazing extension. I use it almost everyday.

There is one small bug with scrolling though.

Steps to reproduce:

  1. Select a large amount of text such that it goes beyond what can be displayed in the window
  2. Try to scroll to reveal the overflowing text

Expected behaviour:
One should be able to scroll through the left pane

Current behaviour:
Cursor goes beyond the displayed text but the text does not scroll

Gnome shell version: 3.34.1
OS: Ubuntu 19.10

Default translation provider is always Yandex

Hi,
Unfortunately I see little annoying bug in the latest update only, if update it from github or from extensions.gnome.org: the default translation source is always Yandex. Yes, I could switch it manually every time I press Win+T to open this extension, but it's not very comfortable.

I tried:

  • to choose the default source at Preferences of text-translator directly,
  • to change it by gnome-tweak-tools (the same, as I see),
  • to reinstall extension from github \ from gnome.org,
  • reboot gnome and PC,
  • remember the last used language (I hoped for the miracle, huh).
    And when I press Win+T again, I always see Yandex as a source.

Could you fix it please?
Thanks

It doesn't save any changes made in "Translators" tab!

First of all, I would like to thank you for such an awesome tool 👍


The preferences interface allows me to change any option and saves them after closing it exept those options in Translators tab !
I want to change the default translator to Google translator, the default source language to Detect Language and the default target language to Arabic.
When I make those changes and close to preferences UI, I returns them to the default options Yandex Translator , Russian and Frensh.
My machine runs Manjaro with Gnome 3.22.2

Seemingly irrelevant text prepending translation

No matter what I'm trying to translate, the translation always begins with:

car:in
auto:en
car:in, auto:in

This happens only when I select "Detect language" for the input. When I change the target language the word in changes to another random word.

I'm using the Google Translate provider.

Proxy

Hello,

I wonder if there is a possibility to support the general proxy settings of gnome. These information can be forwarded to translate-shell (for the google provider).

Translate shell Networking options:
-x HOST:PORT, -proxy HOST:PORT
Use HTTP proxy on given port.

I think we can add the proxy option in google_translation_provider.js around line 300.

Styling is off a bit

The translation window is a bit messed up, and changing the size of the window doesn't help to fix it, can I do something to solve this?

Gnome shell version 3.26.1 (Ubuntu 17.10)

Smaller window
Bigger window

WONDERFUL extension by the way!

Click anywhere to close

It is somewhat inconvenient to close - lets assume that you are translating often using the select shortcut - there is one hand on the mouse (to select) and the other for the keyboard shortcut. Then to close, I need to select the "Quit" button with mouse, or move my left hand to the "ESC" key.

Possible fixes:

  1. Clicking the backdrop should close the window.
  2. Using the assigned shortcut keys should close the window if it is already open

Add a LICENSE

Hi, Can you please add a LICENSE to the project?
Thanks!

Does not work on Gnome 3.38

Hi!

Update my system to Gnome 3.38. And got this error message:
gnome-shell[2428]: JS ERROR: Extension [email protected]: TypeError: meta is null#012_patchContainerClass/containerClass.prototype.child_set@resource:///org/gnome/shell/ui/environment.js:43:13#012_patchContainerClass/containerClass.prototype.add@resource:///org/gnome/shell/ui/environment.js:52:18#012EntryBase@/home/michael/.local/share/gnome-shell/extensions/[email protected]/translator_dialog.js:43:20#012SourceEntry@/home/michael/.local/share/gnome-shell/extensions/[email protected]/translator_dialog.js:223:9#012_init@/home/michael/.local/share/gnome-shell/extensions/[email protected]/translator_dialog.js:294:24#012TranslatorExtension@/home/michael/.local/share/gnome-shell/extensions/[email protected]/extension.js:286:24#012enable@/home/michael/.local/share/gnome-shell/extensions/[email protected]/extension.js:1078:18#012_callExtensionEnable@resource:///org/gnome/shell/ui/extensionSystem.js:167:32#012loadExtension@resource:///org/gnome/shell/ui/extensionSystem.js:348:26#012_loadExtensions/<@resource:///org/gnome/shell/ui/extensionSystem.js:586:18#012collectFromDatadirs@resource:///org/gnome/shell/misc/fileUtils.js:27:28#012_loadExtensions@resource:///org/gnome/shell/ui/extensionSystem.js:565:19#012_enableAllExtensions@resource:///org/gnome/shell/ui/extensionSystem.js:595:18#012_sessionUpdated@resource:///org/gnome/shell/ui/extensionSystem.js:626:18#012init@resource:///org/gnome/shell/ui/extensionSystem.js:56:14#012_initializeUI@resource:///org/gnome/shell/ui/main.js:269:22#012start@resource:///org/gnome/shell/ui/main.js:159:5#012@

:1:47

No longer working with Gnome 3.32

I'm running archlinux with gnome 3.32, the extension won't load with this latest update. Looking at the errors from lg it shows

this._contruct is not a function

Cyrillic seems unsupported

Hey guys,

well, at first, I want to say thanks for such a great extension! I've been using it daily a lot!
I've found just one issue so far when trying to translate Cyrillic letters.

For example for input: тест I'm getting Ñ‚ÐµÑ Ñ ‚Ñ�еÑ�Ñ� Ñ‚ÐµÑ Ñ ‚, Ñ Ñ Ñ output.

Exactly, I'm translating Serban to English.

Best regards,
Milosh

pasting doesn't work

Hello, I installed this extension from extensions.gnome.org, and translate-shell from debian testing repo. Translator works in general, however it looks like copy-pasting doesn't. When I press "activate from primary selection" shortcut, translation field is either empty, or has previous text that I entered manually in it when used it before. Even more, I can't paste into it, it just remains empty. I checked for errors in gnome looking glass, but none of them where reported there. Can the issue be caused by wayland (I use gnome 3.22 and it runs on wayland on my machine)? Also, this extension was outdated for some time, I just updated it, could it be that installation process went wrong?

p.s. Thanks for you work on this, in my opinion it's one of the most usefull extensions in gnome! I'm glad that it's now maintained again.

Prefrences button dosn't work! on ubuntu 20.04 & gnome 3.36

by right-clicking the icon clicking on preferences nothing opens. I checked the jorurnalctl with the followiing command:
journalctl /usr/bin/gnome-shell -f -o cat
And after clicking preferences it logs frequently the error below:

JS ERROR: TypeError: app is null
launch_extension_prefs@/home/amin/.local/share/gnome-shell/extensions/[email protected]/extension.js:42:16
_add_menu_items/<@/home/amin/.local/share/gnome-shell/extensions/[email protected]/extension.js:121:17
activate@resource:///org/gnome/shell/ui/popupMenu.js:191:14
vfunc_button_release_event@resource:///org/gnome/shell/ui/popupMenu.js:138:14

I'm using
My os info:

DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=20.04
DISTRIB_DESCRIPTION="Ubuntu Focal Fossa (development branch)"

GNOME version: 3.36.0
text-translator version: latest on https://extensions.gnome.org/ (I believe it is 3.34)

Spelled text to cover the whole entered text

Run under:

$ gnome-shell --version
GNOME Shell 3.30.2

Hi. Enhancements request:

  • Present web site URL could be found from Help/About section as part of that group gnome_3_extension text_translator_2.

  • Spelled text service does not cover the whole entered text, and even stops while inside a word; As illustration, here is highlighted the part of text the service currently spelled:

gnome_3_extension text_translator_3

  • Application window not to froze others applications' windows opened at the same time.

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.