Coder Social home page Coder Social logo

rails_admin_globalize_field's Introduction

RailsAdminGlobalizeField

RailsAdminGlobalizeField adds tabbed interface to rails_admin for multilingual models (using globalize gem)

It adds custom field type that you can use for globalize's translations association.

Installation

Add and configure globalize first.

  gem 'globalize', '~> 5.0'

Add this gem and run bundle.

  gem 'rails_admin_globalize_field', '~> 1.0'

Usage

Don't forget to set I18n.available_locale, because it uses that to determine what tabs to show

Add translation models to config.included_models in initializers/rails_admin.rb:

  config.included_models = ['Model','Model::Translation']

Add accepts_nested_attributes_for for translations to your translated model.

  class Model < ActiveRecord::Base
    translates :title, :desc
    accepts_nested_attributes_for :translations, allow_destroy: true
  end

Add configuration to your translated model and associated translation model. :locale field is always required.

  config.model 'Post' do
    configure :translations, :globalize_tabs
  end

  config.model 'Model::Translation' do
    visible false
    configure :locale, :hidden do
      help ''
    end
    include_fields :locale, :title, :desc
  end

If you need to add validation to the translation class, you can add it on translation_class inside translated model:

  translation_class.validates :title, presence: true

Screenshot

Screenshot

Contributing

  1. Fork it
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Add some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create new Pull Request

rails_admin_globalize_field's People

Contributors

rwd avatar scarfacedeb avatar stream7 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

Watchers

 avatar

rails_admin_globalize_field's Issues

How to show the name of the language in a tab?

Sorry for bothering you again, but how would I change the names of the locales shown in the tabs from:

en, sq, sr

To their names in the current locale? Something like this:

English, Albanian, Serbian (when in English)

Engleski, Albanski, Srpski (when in Serbian)

and so on?

Translated field names

Hi. Is it possible to use localized attribute names inside tab here?
2019-10-16-163550_1366x768_scrot
Name and subtitle are translated for my default locale (not en) via ru/active_record/attributes/MY_MODEL/name and ru/active_record/attributes/MY_MODEL/subtitle. Should I add anything else in locale files?

Add support for ActiveStorage

It would be great if there was support for ActiveStorage. Attachment for each language. Or maybe even just allow putting custom fields in a specified tab e.g.
configure :en do field :attachment end

undefined method `to_sym' for nil:NilClass

If in rails_admin.rb initializers I add translation for label, for example:

edit do
        field :title do
          label 'Назва'
        end
        field :description do
          label 'Опис'
        end
 end

After save I have error:
undefined method to_sym' for nil:NilClassin rails_admin_globalize_field (0.3.1) lib/rails_admin_globalize_field.rb line 48:new_locales = available_locales - translations.keys.map(&:to_sym)`

tabbing not working properly having nested objects

When rails_admin_globalize_field widget is used within a nested object, it does not work properly, as the tabs are not properly switched.
In this particular case, there will be more DOM elements with the same id.
I have tried to inject an unique string within https://github.com/scarfacedeb/rails_admin_globalize_field/blob/master/lib/rails_admin_globalize_field/globalize_tabs.rb#L31 , however, the approach dis not worked as expected.
I think a different tab binding should be used.

Using:

  • rails_admin-2.0.2
  • rails_admin_globalize_field-1.2.0

===

Having the models set up like:

class Poll < ApplicationRecord
  has_many :poll_options, dependent: :destroy
  accepts_nested_attributes_for :translations, allow_destroy: true
end
class PollOption < ApplicationRecord
  translates :description, touch: true, versioning: :paper_trail
  accepts_nested_attributes_for :translations, allow_destroy: true
end

And the following Rails admin setup

  config.model "Poll" do
    parent "Post"
    edit do
     fields :poll_options
    end 
  end 

  config.model "PollOption" do
    configure :translations, :globalize_tabs
    nested do
      exclude_fields :translations
    end
  end

  config.model 'PollOption::Translation' do
    include_fields :locale, :description
  end

I get some some strange behavior regarding the tabbing when trying to add multiple Poll Option entries. The tabbing is activated on model level (meaning i can browse through the Poll Option forms), however, the translations (which are also tabbed are not working). when clicking on on the language, the selected tab becomes active, but the tab-pane is not being changed.

I get the same behavior when trying to edit a poll that has 2 options. The tab-panes in the second object is not correctly activated.

Can't add new translation?

When editing a model I don't seem to be able to add additional translations to the translated fields. Is there some setting I need to add to allow me to add a new language tab and select the language?

Screen Shot 2020-06-01 at 10 52 45 PM

Translations tab shows all available locales

When i use this gem, it will show all available locales on tabs. So i have to custom

module ProductServer
  class Application < Rails::Application
    I18n.available_locales = [:en, :vi]
  end
end

in config/application.rb file to just only show which locales i want.

Missing partial rails_admin/main/_form_globalize_tabs in ruby 3

While using:

  • ruby 3.1.2
  • rails 6.1.7
  • rails_admin 3.0.0
  • rails_admin_globalize_field 1.2.0

I'm getting the following error while trying to edit any model:

ActionView::MissingTemplate in RailsAdmin::Main#edit

Showing /home/rael/.rvm/gems/ruby-3.1.2@foobar-set/gems/rails_admin-3.0.0/app/views/rails_admin/main/edit.html.erb where line #2 raised:

Missing partial rails_admin/main/_form_globalize_tabs with {:locale=>[:en], :formats=>[:html], :variants=>[], :handlers=>[:raw, :erb, :html, :builder, :ruby]}. Searched in:
  * "/home/rael/Projects/www/foobar/app/views"
  * "/home/rael/.rvm/gems/ruby-3.1.2@foobar-set/gems/delayed-web-0.4.9/app/views"
  * "/home/rael/.rvm/gems/ruby-3.1.2@foobar-set/gems/rails_admin_globalize_field-1.2.0/app/views"
  * "/home/rael/.rvm/gems/ruby-3.1.2@foobar-set/gems/rails_admin-3.0.0/app/views"

NoMethodError (undefined method `defined' for nil:NilClass):

Hey there.

config.model 'Model::Translation' do
    visible false
    configure :locale, :hidden do
      help ''
    end
    include_fields :locale, :title, :desc
  end

When you add this to rails_admin config you have the following error.

NoMethodError (undefined method `defined' for nil:NilClass):
config/initializers/rails_admin.rb:18:in `block (2 levels) in <top (required)>'

Solution to fix this is to remove :desc key.
So it will work if you change

    include_fields :locale, :title, :desc

to

    include_fields :locale, :title

So readme is a bit confusing about all this stuff.

This works in
ruby 2.4.3
rails 5.1.4
rails_admin 1.2.0

Fields to be translated appear above tabs

I am having troubles making the gem work with Rails 4 and RailsAdmin 0.5.0

I have an Article model:

class Article < ActiveRecord::Base
  belongs_to :user
  attr_accessible :content, :summary, :title, :user_id

  translates :content, :title, :summary, :versioning => true
  accepts_nested_attributes_for :translations, :allow_destroy => true

  has_paper_trail
end

rails_admin.rb initialiser consists of:

  config.included_models = ['Article','Article::Translation']

  config.model 'Article::Translation' do
    visible false
    configure :locale, :hidden
    include_fields :locale, :title, :summary, :content
  end

Any ideas what could be wrong?
screen shot 2013-10-16 at 11 14 14 pm

Duplicated fields

Привет! Не могу понять, в readme на скринах поля не дублируются.
У меня же сначала показываются поля из стандартной локали, и после них появляются табы с переключением языка. Как сделать так, чтобы сначала выводились поля которые не участвуют в переводе, а потом появлялись табы с полями которые нужно переводить?

На скриншоте который я приложил, сначала же идут поля title, description и тд(из английско локали), и потом появляются табы с тем же самым, получается некое дублирование..

Post.rb

class Post < ActiveRecord::Base
  translates :title, :description, :content, :meta_description
  accepts_nested_attributes_for :translations, allow_destroy: true
end

Post.rb

RailsAdmin.config do |config|
  config.included_models = ['Post','Post::Translation']

  config.actions do
    dashboard                     # mandatory
    index                         # mandatory
    new
    export
    bulk_delete
    show
    edit
    delete
    show_in_app
  end

  config.model Post do
    include_fields :locale, :title, :description, :content, :meta_description
  end

  config.model 'Post::Translation' do
    visible false
    configure :locale, :hidden do
      help ''
    end
    include_fields :locale, :title, :description, :content, :meta_description
  end

end

2015-11-29 14 13 57

Few tabs on page

If I have two or more tabs on page, tab works only on first field block.

2014-10-09 14 39 12

Missing :locale fields in the new record

I did everything what is in the documentation properly. Everything seems to be OK. Records with the existing translations are updated correctly, but the new records (SQL commands) are without field :locale and cause the error message:
- Translations locale can't be blank

Here is the output (server log):

Started POST "/r_admin_321/event/new" for 127.0.0.1 at 2020-06-26 00:31:36 +0200
Processing by RailsAdmin::MainController#new as HTML
  Parameters: {"utf8"=>"✓", "authenticity_token"=>"9PdkLD7qAHFUjXtkNHPVSOdcLT0gdSNfNXveFhmvqEkUA2CzbtY81zqMG4Gesvv/CdRNjsvhPVNOqb9QxfEAVw==", "event"=>{"link"=>"", "active"=>"0", "event_photo_ids"=>["", ""], "translations_attributes"=>{"0"=>{"name"=>"aaa", "perex"=>"", "description"=>""}, "1"=>{"name"=>"bbb", "perex"=>"", "description"=>""}}}, "_wysihtml5_mode"=>"1", "return_to"=>"http://fi.qq:3000/r_admin_321/event", "_save"=>"", "model_name"=>"event"}
  EventPhoto Load (0.9ms)  SELECT "event_photos"."id", "event_photos"."image", "event_photos"."position", "event_photos"."event_id", "event_photos"."created_at", "event_photos"."updated_at" FROM "event_photos" WHERE 1=0 ORDER BY "event_photos"."position" ASC
  ↳ /home/modreoci/.rvm/gems/ruby-2.6.5@skphccc2/gems/activerecord-5.2.4.2/lib/active_record/log_subscriber.rb:98
   (0.2ms)  BEGIN
  ↳ /home/modreoci/.rvm/gems/ruby-2.6.5@skphccc2/gems/activerecord-5.2.4.2/lib/active_record/log_subscriber.rb:98
   (0.2ms)  ROLLBACK

Here config/initialiters/rails_admin.rb

RailsAdmin.config do |config|

  config.included_models = ['Carousel','Carousel::Translation','Document','Document::Translation','Event','Event::Translation','EventPhoto','EventPhoto::Translation','Member','Member::Translation','Personality','Personality::Translation','Spotlight','Spotlight::Translation']

  config.actions do
    dashboard                     # mandatory
    index                         # mandatory
    new
    export
    bulk_delete
    show
    edit
    delete
    show_in_app

    ## With an audit adapter, you can add:
    # history_index
    # history_show
    nestable
  end

  config.model Carousel do
    nestable_list true
    configure :translations, :globalize_tabs
    exclude_fields :id, :position, :created_at, :updated_at
  end

  config.model 'Carousel::Translation' do
    visible false
    configure :locale, :hidden do
      help ''
    end
    include_fields :locale, :title
  end

  config.model Document do
    nestable_list true
    configure :translations, :globalize_tabs
    exclude_fields :id, :position, :created_at, :updated_at
  end

  config.model 'Document::Translation' do
    visible false
    configure :locale, :hidden do
      help ''
    end
    edit do
      field :name
      field :description, :wysihtml5
    end
    include_fields :locale, :name, :description, :slug
  end

  config.model Event do
    nestable_list true
    configure :translations, :globalize_tabs
    exclude_fields :id, :position, :created_at, :updated_at
  end

  config.model 'Event::Translation' do
    visible false
    configure :locale do
      help ''
    end
    edit do
      field :name
      field :perex
      field :description, :wysihtml5
    end
    include_fields :locale, :name, :perex, :description, :slug
  end

  config.model EventPhoto do
    nestable_list true
    configure :translations, :globalize_tabs
    exclude_fields :id, :position, :created_at, :updated_at
  end

  config.model 'EventPhoto::Translation' do
    visible false
    configure :locale, :hidden do
      help ''
    end
    edit do
      field :name
      field :description, :wysihtml5
    end
    include_fields :locale, :name, :description
  end

  config.model Member do
    nestable_list true
    configure :translations, :globalize_tabs
    exclude_fields :id, :position, :slug, :created_at, :updated_at
  end

  config.model 'Member::Translation' do
    visible false
    configure :locale, :hidden do
      help ''
    end
    edit do
      field :description, :wysihtml5
    end
    include_fields :locale, :description
  end

  config.model Personality do
    nestable_list true
    configure :translations, :globalize_tabs
    exclude_fields :id, :position, :slug, :created_at, :updated_at
  end

  config.model 'Personality::Translation' do
    visible false
    configure :locale, :hidden do
      help ''
    end
    edit do
      field :job_title
      field :role
      field :description, :wysihtml5
    end
    include_fields :locale, :job_title, :role, :description
  end
`
  config.model Spotlight do
    nestable_list true
    configure :translations, :globalize_tabs
    exclude_fields :id, :position, :slug, :created_at, :updated_at
  end

  config.model 'Spotlight::Translation' do
    visible false
    configure :locale, :hidden do
      help ''
    end
    edit do
      field :body, :wysihtml5
    end
    include_fields :locale, :body
  end

end

Here app/models/event.rb

class Event < ApplicationRecord
  default_scope -> { order(position: :asc) }
  has_many :event_photos, -> { order(position: :asc) }, :dependent => :nullify
  translates :name, :perex, :description, :slug
  accepts_nested_attributes_for :translations, allow_destroy: true
  acts_as_list top_of_list: 0
  translation_class.validates :name, presence: true
end

And finally the screenshot (both translations fields Name was correctly filled out):
obrázok

no :notice on translation_class.validates

When defining translation_class.validates :column, presence: true
And in admin panel, if leaving field blank Save button does not work, and no notice.

using
gem 'rails_admin'
gem 'rails_admin_globalize_field'

How to translate field names?

Hi,

I'm using the gem for translating 3 fields, Title, Summary and Description:

image

However, I've been trying to localize the field labels ("Title", "Summary", "Description") to my 3 locales, with no success. I'm using the traditional path to translating my model names and attributes, that is, for each locale, using the name locale.activerecord.{attributes, models}.*.

Here is the page of our project, this is how my localization files look and this is how my rails admin initializer looks.

Ckeditor Integration

Hi!
Great engine to start with.
I've run into a bit of an issue wherein I need to be able to make textareas that contain translated content behave as ckeditor.

I have CK working fine with other fields that do not require translation. I'm not sure how to go about doing this though.

Really what I need is something like this:

rails_admin do
    configure :translations, :globalize_tabs
    navigation_label "Content"
    field :translations do
      field :content, :ck_editor
      ....
    end
    field :source
  end

But that doesn't work. At present, is there any way of getting this engine to render a textarea as a CK_editor? I'm pretty sure it's as simple as adding a classname to the textarea, I'm not sure if this would lie under this engine's ability or if it's something that needs to be altered on Rails Admin itself.

Thoughts?

Ckeditor

Is there any way to implement rails_admin_globalize_field into ckeditor?

Doesn't work with Rails 4.2, RailsAdmin 0.7.0

Here are my output:

/Users/firecoder/.rvm/gems/ruby-2.2.3@gud-rails-admin/gems/rails_admin-0.7.0/lib/rails_admin/config/fields/types/belongs_to_association.rb:7:in `<module:Types>': uninitialized constant RailsAdmin::Config::Fields::Association (NameError)
    from /Users/firecoder/.rvm/gems/ruby-2.2.3@gud-rails-admin/gems/rails_admin-0.7.0/lib/rails_admin/config/fields/types/belongs_to_association.rb:6:in `<module:Fields>'
    from /Users/firecoder/.rvm/gems/ruby-2.2.3@gud-rails-admin/gems/rails_admin-0.7.0/lib/rails_admin/config/fields/types/belongs_to_association.rb:5:in `<module:Config>'
    from /Users/firecoder/.rvm/gems/ruby-2.2.3@gud-rails-admin/gems/rails_admin-0.7.0/lib/rails_admin/config/fields/types/belongs_to_association.rb:4:in `<module:RailsAdmin>'
    from /Users/firecoder/.rvm/gems/ruby-2.2.3@gud-rails-admin/gems/rails_admin-0.7.0/lib/rails_admin/config/fields/types/belongs_to_association.rb:3:in `<top (required)>'
    from /Users/firecoder/.rvm/gems/ruby-2.2.3@gud-rails-admin/gems/rails_admin-0.7.0/lib/rails_admin/config/fields/types/all.rb:2:in `<top (required)>'
    from /Users/firecoder/.rvm/gems/ruby-2.2.3@gud-rails-admin/gems/rails_admin-0.7.0/lib/rails_admin/config/fields/types.rb:23:in `<module:Types>'
    from /Users/firecoder/.rvm/gems/ruby-2.2.3@gud-rails-admin/gems/rails_admin-0.7.0/lib/rails_admin/config/fields/types.rb:8:in `<module:Fields>'
    from /Users/firecoder/.rvm/gems/ruby-2.2.3@gud-rails-admin/gems/rails_admin-0.7.0/lib/rails_admin/config/fields/types.rb:7:in `<module:Config>'
    from /Users/firecoder/.rvm/gems/ruby-2.2.3@gud-rails-admin/gems/rails_admin-0.7.0/lib/rails_admin/config/fields/types.rb:6:in `<module:RailsAdmin>'
    from /Users/firecoder/.rvm/gems/ruby-2.2.3@gud-rails-admin/gems/rails_admin-0.7.0/lib/rails_admin/config/fields/types.rb:5:in `<top (required)>'
    from /Users/firecoder/.rvm/gems/ruby-2.2.3@gud-rails-admin/gems/rails_admin-0.7.0/lib/rails_admin/config/fields.rb:78:in `<top (required)>'
    from /Users/firecoder/.rvm/gems/ruby-2.2.3@gud-rails-admin/gems/rails_admin-0.7.0/lib/rails_admin/config/model.rb:7:in `<top (required)>'
    from /Users/firecoder/.rvm/gems/ruby-2.2.3@gud-rails-admin/gems/rails_admin-0.7.0/lib/rails_admin/config/lazy_model.rb:1:in `<top (required)>'
    from /Users/firecoder/.rvm/gems/ruby-2.2.3@gud-rails-admin/gems/rails_admin-0.7.0/lib/rails_admin/config.rb:1:in `<top (required)>'
    from /Users/firecoder/.rvm/gems/ruby-2.2.3@gud-rails-admin/gems/rails_admin-0.7.0/lib/rails_admin/config/fields/association.rb:1:in `<top (required)>'
    from /Users/firecoder/.rvm/gems/ruby-2.2.3@gud-rails-admin/gems/rails_admin_globalize_field-0.3.1/lib/rails_admin_globalize_field.rb:2:in `<top (required)>'
    from /Users/firecoder/.rvm/gems/ruby-2.2.3@gud-rails-admin/gems/bundler-1.10.6/lib/bundler/runtime.rb:76:in `require'
    from /Users/firecoder/.rvm/gems/ruby-2.2.3@gud-rails-admin/gems/bundler-1.10.6/lib/bundler/runtime.rb:76:in `block (2 levels) in require'
    from /Users/firecoder/.rvm/gems/ruby-2.2.3@gud-rails-admin/gems/bundler-1.10.6/lib/bundler/runtime.rb:72:in `each'
    from /Users/firecoder/.rvm/gems/ruby-2.2.3@gud-rails-admin/gems/bundler-1.10.6/lib/bundler/runtime.rb:72:in `block in require'
    from /Users/firecoder/.rvm/gems/ruby-2.2.3@gud-rails-admin/gems/bundler-1.10.6/lib/bundler/runtime.rb:61:in `each'
    from /Users/firecoder/.rvm/gems/ruby-2.2.3@gud-rails-admin/gems/bundler-1.10.6/lib/bundler/runtime.rb:61:in `require'
    from /Users/firecoder/.rvm/gems/ruby-2.2.3@gud-rails-admin/gems/bundler-1.10.6/lib/bundler.rb:134:in `require'
    from /Volumes/hdd/Dropbox/Dropbox/workspace/RubymineProjects/gud-rails-admin/config/application.rb:7:in `<top (required)>'
    from /Users/firecoder/.rvm/gems/ruby-2.2.3@gud-rails-admin/gems/railties-4.2.4/lib/rails/commands/commands_tasks.rb:78:in `require'
    from /Users/firecoder/.rvm/gems/ruby-2.2.3@gud-rails-admin/gems/railties-4.2.4/lib/rails/commands/commands_tasks.rb:78:in `block in server'
    from /Users/firecoder/.rvm/gems/ruby-2.2.3@gud-rails-admin/gems/railties-4.2.4/lib/rails/commands/commands_tasks.rb:75:in `tap'
    from /Users/firecoder/.rvm/gems/ruby-2.2.3@gud-rails-admin/gems/railties-4.2.4/lib/rails/commands/commands_tasks.rb:75:in `server'
    from /Users/firecoder/.rvm/gems/ruby-2.2.3@gud-rails-admin/gems/railties-4.2.4/lib/rails/commands/commands_tasks.rb:39:in `run_command!'
    from /Users/firecoder/.rvm/gems/ruby-2.2.3@gud-rails-admin/gems/railties-4.2.4/lib/rails/commands.rb:17:in `<top (required)>'
    from bin/rails:4:in `require'
    from bin/rails:4:in `<main>'

undefined method `[]' for #<RailsAdmin::Adapters::ActiveRecord::Association:0x00000106a022e0>

My gemfile:

source 'https://rubygems.org'
ruby '2.1.1'
gem 'rails', '4.0.0'
gem 'sqlite3'
gem 'sass-rails', '~> 4.0.0'
gem 'uglifier', '>= 1.3.0'
gem 'coffee-rails', '~> 4.0.0'
gem 'jquery-rails'
gem 'turbolinks'
gem 'jbuilder', '~> 1.2'
gem 'devise'
gem 'haml-rails'
gem 'simple_form'
gem 'therubyracer', :platform=>:ruby
group :development do
  gem 'better_errors'
  gem 'binding_of_caller', :platforms=>[:mri_19, :mri_20, :rbx]
  gem 'html2haml'
  gem 'quiet_assets'
  gem 'rails_layout'
end
group :development, :test do
  gem 'factory_girl_rails'
  gem 'rspec-rails'
  gem 'thin'
end
group :production do
  gem 'unicorn'
end
group :test do
  gem 'capybara'
  gem 'database_cleaner', '1.0.1'
  gem 'email_spec'
end

gem 'rmagick', '~> 2.13.1'
gem 'rails_admin', require: 'rails_admin', github: 'sferik/rails_admin'
gem 'ckeditor'
gem 'carrierwave'
gem 'compass-rails'
gem 'susy', '1.0.9'

gem 'globalize', '~> 4.0.1'
gem 'globalize-accessors'
gem 'rails_admin_globalize_field'

And I found it's because of

properties = parent.abstract_model.associations.detect { |p| name == p[:name] }

'parent.abstract_model.associations' is an array of 'RailsAdmin::Adapters::ActiveRecord::Association', so fast fix is change that to

properties = parent.abstract_model.associations.detect { |p| name == p.name }

Add translation fields as the first item in the edit form

The translation fields are, by default, displayed at the bottom of all the other fields in the model. How can I change the order?

edit do
  # I wanna add the translations fields here.
  field :reseller_only
  field :families
  field :image
end

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.