feat(i18n): add Tamil language translation - #373
Conversation
|
@vignesh-s-001 is attempting to deploy a commit to the Suman Kunwar's projects Team on Vercel. A member of the Team first needs to authorize it. |
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
There was a problem hiding this comment.
🟡 Changes recommended
Several newly added pages include objectively incorrect JavaScript API names and/or broken code examples that should be corrected before merging.
Once you've addressed the issues Copilot identified, you can request another Copilot review.
Pull request overview
This PR adds a new Tamil (ta) locale by introducing translated course content pages and wiring the language into the project’s language navigation/configuration.
Changes:
- Adds many new Tamil markdown pages across chapters, exercises, projects, and appendices.
- Registers Tamil in
LANGS.mdandbook.json. - Updates the website language-count display.
File summaries
| File | Description |
|---|---|
| ta/strings/substring.md | New Tamil page for substring() |
| ta/strings/split.md | New Tamil page for split() |
| ta/strings/replace.md | New Tamil page for replace() |
| ta/strings/README.md | Tamil strings chapter index/table |
| ta/strings/length.md | New Tamil page for string length |
| ta/strings/create.md | New Tamil page for creating strings |
| ta/strings/concat.md | New Tamil page for concatenation |
| ta/strings/charAt.md | New Tamil page for charAt() |
| ta/server-side/server-side-rendering.md | New Tamil SSR page |
| ta/References.md | New Tamil references section |
| ta/promise-async-await/README.md | Tamil async chapter index |
| ta/promise-async-await/async-await.md | New Tamil async/await page |
| ta/Preface.md | New Tamil preface |
| ta/objects/reference.md | New Tamil objects reference page |
| ta/objects/README.md | Tamil objects chapter index |
| ta/objects/prototype.md | New Tamil prototype page |
| ta/objects/properties.md | New Tamil properties page |
| ta/objects/mutable.md | New Tamil mutability page |
| ta/objects/enumeration.md | New Tamil enumeration page |
| ta/objects/delete.md | New Tamil delete operator page |
| ta/objects/constructor-property.md | New Tamil constructor property page |
| ta/objects/constructor-functions.md | New Tamil constructor functions page |
| ta/numbers/README.md | Tamil numbers chapter index |
| ta/miscellaneous/template-literals.md | New Tamil template literals page |
| ta/miscellaneous/README.md | Tamil miscellaneous chapter index |
| ta/miscellaneous/hoisting.md | New Tamil hoisting page |
| ta/miscellaneous/global-footprint.md | New Tamil global footprint page |
| ta/miscellaneous/currying.md | New Tamil currying page |
| ta/miscellaneous/Added getters and setters.md | New Tamil getters/setters page (misc) |
| ta/loops/while.md | New Tamil while loop page |
| ta/loops/README.md | Tamil loops chapter index |
| ta/loops/dowhile.md | New Tamil do...while page |
| ta/loops/continue.md | New Tamil continue statement page |
| ta/loops/break.md | New Tamil break statement page |
| ta/json.md | New Tamil JSON chapter page |
| ta/interview-questions/README.md | Tamil interview questions index |
| ta/functions/set-timeout.md | New Tamil setTimeout page |
| ta/functions/set-interval.md | New Tamil setInterval page |
| ta/functions/rest-operator.md | New Tamil rest operator page |
| ta/functions/recursive-functions.md | New Tamil recursion page |
| ta/functions/README.md | Tamil functions chapter index |
| ta/functions/hoisting.md | New Tamil functions hoisting page |
| ta/exercises/user-input-variables.md | New Tamil exercise: user input |
| ta/exercises/README.md | Tamil exercises chapter index |
| ta/exercises/objects.md | New Tamil exercise: objects |
| ta/exercises/multiplication.md | New Tamil exercise: multiplication |
| ta/exercises/get-the-titles.md | New Tamil exercise: get titles |
| ta/exercises/functions.md | New Tamil exercise: functions |
| ta/exercises/fizzbuzz-problem.md | New Tamil exercise: FizzBuzz |
| ta/exercises/constants.md | New Tamil exercise: constants |
| ta/exercises/console.md | New Tamil exercise: console |
| ta/exercises/conditional-statements.md | New Tamil exercise: conditionals |
| ta/exercises/concatenation.md | New Tamil exercise: concatenation |
| ta/es6-concepts/template-literals.md | New Tamil ES6 template literals page |
| ta/es6-concepts/README.md | Tamil ES6 chapter index |
| ta/es6-concepts/map.md | New Tamil Map page |
| ta/es6-concepts/destructuring.md | New Tamil destructuring page |
| ta/error-handling/try...catch...finally.md | New Tamil try/catch/finally page |
| ta/error-handling/try...-catch.md | New Tamil try/catch page |
| ta/document-object-model/README.md | Tamil DOM chapter index |
| ta/design-patterns/README.md | Tamil design patterns index |
| ta/Dedication.md | New Tamil dedication page |
| ta/Credits.md | New Tamil credits page |
| ta/Copyright.md | New Tamil copyright page |
| ta/conditional/switch.md | New Tamil switch page |
| ta/conditional/README.md | Tamil conditional chapter index |
| ta/conditional/else.md | New Tamil else page |
| ta/conditional/concatenate.md | New Tamil condition concatenation page |
| ta/conditional/comparators.md | New Tamil comparators page |
| ta/complexity/time-complexity.md | New Tamil time complexity page |
| ta/complexity/space-complexity.md | New Tamil space complexity page |
| ta/complexity/README.md | Tamil complexity chapter index |
| ta/classes/static.md | New Tamil static members page |
| ta/classes/README.md | Tamil classes chapter index |
| ta/classes/inheritance.md | New Tamil inheritance page |
| ta/classes/composition.md | New Tamil composition page |
| ta/classes/access-modifiers.md | New Tamil access modifiers page |
| ta/browser-object-model-bom/window.md | New Tamil BOM window page |
| ta/browser-object-model-bom/screen.md | New Tamil BOM screen page |
| ta/browser-object-model-bom/README.md | Tamil BOM chapter index |
| ta/browser-object-model-bom/popup.md | New Tamil popup page |
| ta/browser-object-model-bom/navigator.md | New Tamil navigator page |
| ta/browser-object-model-bom/location.md | New Tamil location page |
| ta/browser-object-model-bom/history.md | New Tamil history page |
| ta/browser-object-model-bom/cookies.md | New Tamil cookies page |
| ta/behind-scenes/README.md | Tamil “behind the scenes” index |
| ta/behind-scenes/call-stack.md | New Tamil call stack page |
| ta/beginner-projects/whack-a-mole.md | New Tamil beginner project page |
| ta/beginner-projects/weather-app.md | New Tamil beginner project page |
| ta/beginner-projects/video-trailer-popup.md | New Tamil beginner project page |
| ta/beginner-projects/tip-calculator.md | New Tamil beginner project page |
| ta/beginner-projects/simple-stopwatch.md | New Tamil beginner project page |
| ta/beginner-projects/simon-says.md | New Tamil beginner project page |
| ta/beginner-projects/rock-paper-scissors-game.md | New Tamil beginner project page |
| ta/beginner-projects/random-photos-generator.md | New Tamil beginner project page |
| ta/beginner-projects/monthly-calendar.md | New Tamil beginner project page |
| ta/beginner-projects/image-search.md | New Tamil beginner project page |
| ta/beginner-projects/expense-tracker.md | New Tamil beginner project page |
| ta/beginner-projects/electronic-drum-kit.md | New Tamil beginner project page |
| ta/beginner-projects/digital-clock.md | New Tamil beginner project page |
| ta/basics/README.md | Tamil basics chapter index |
| ta/basics/equality.md | New Tamil equality page |
| ta/basics/comments.md | New Tamil comments page |
| ta/arrays/unshift.md | New Tamil unshift page |
| ta/arrays/spread.md | New Tamil spread page |
| ta/arrays/sort.md | New Tamil sort page |
| ta/arrays/slice.md | New Tamil slice page |
| ta/arrays/shift.md | New Tamil shift page |
| ta/arrays/reverse.md | New Tamil reverse page |
| ta/arrays/push.md | New Tamil push page |
| ta/arrays/pop.md | New Tamil pop page |
| ta/arrays/map.md | New Tamil array map page |
| ta/arrays/length.md | New Tamil array length page |
| ta/arrays/join.md | New Tamil join page |
| ta/arrays/indices.md | New Tamil indices page |
| ta/arrays/for-each.md | New Tamil forEach page |
| ta/animation-resources/velocityjs.md | New Tamil Velocity.js resource page |
| ta/animation-resources/README.md | Tamil animation resources index |
| ta/animation-resources/react-spring.md | New Tamil React Spring resource page |
| ta/animation-resources/gsap.md | New Tamil GSAP resource page |
| LANGS.md | Adds Tamil language entry |
| book.json | Registers Tamil in language config |
| _layouts/website/languages.html | Updates displayed language count |
Review details
Suppressed comments (1)
ta/miscellaneous/Added getters and setters.md:43
- The code fence is marked as
sh, but the snippet is JavaScript; usejavascriptfor correct highlighting.
- Files reviewed: 134/178 changed files
- Comments generated: 13
- Review effort level: Lite
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
| | `toLocalLowerCase()` | host இன் locale ஐப் பயன்படுத்தி சிறிய எழுத்துகளுடன் சரத்தை திரும்பப் பெறுகிறது | | ||
| | `toLocalUpperCase()` | host இன் locale ஐப் பயன்படுத்தி பெரிய எழுத்துகளுடன் சரத்தை திரும்பப் பெறுகிறது | |
| ```javascript | ||
| / | ||
| 1 | ||
| 2 | ||
| Fizz | ||
| 4 | ||
| Buzz | ||
| Fizz | ||
| 7 | ||
| 8 | ||
| Fizz | ||
| Buzz | ||
| 11 | ||
| Fizz | ||
| 13 | ||
| 14 | ||
| FizzBuzz | ||
| 16 | ||
| .... | ||
| .... | ||
| 98 | ||
| Fizz | ||
| Buzz | ||
| / | ||
| ``` |
| let myCar = new Model("Toyota", "Camry"); | ||
| console.log(myCar.show()); // I have a Camry, it is a Toyota. |
| --- | ||
| chapter: 6 | ||
| pageNumber: 59 | ||
| description: வரிசையின் தொடக்கத்தில் ஒரு உறுப்பை சேர்க்க reverse முறையைப் பயன்படுத்தலாம். இது அசல் வரிசையை மாற்றி புதிய வரிசை நீளத்தை திரும்பப் பெறுகிறது. | ||
| --- |
| let text = `Hello World!`; | ||
| // template literals with both single and double code inside a single string | ||
| let text = `He's often called "Johnny"`; | ||
| // template literals with multiline strings | ||
| let text = | ||
| `The quick | ||
| brown fox | ||
| jumps over | ||
| the lazy dog`; |
| --- | ||
| chapter: 19 | ||
| pageNumber: 124 | ||
| description: இந்த அத்தியாயத்தில், ஜாவாஸ்கிரிப்ட் கெட்டர்கள் (getters) மற்றும் செட்டர்கள் (setters) பற்றி அறிந்து கொள்வோம். ஜாவாஸ்கிரிப்ட் கெட்டர்கள் மற்றும் செட்டர்கள் பொருள் பண்புகளுக்கான (object properties) அணுகலை வழங்கும் சிறப்பு முறைகள் (methods) ஆகும். பண்புகளின் மதிப்புகளைப் படிக்கக் (read) கெட்டர்கள் பயன்படுத்தப்படுகின்றன, அதேசமயம் பண்புகளுக்கு மதிப்புகளை எழுதச் (write) செட்டர்கள் பயன்படுத்தப்படுகின்றன. | ||
|
|
||
| --- | ||
|
|
||
| ## கெட்டர்கள் மற்றும் செட்டர்கள் (Getters and Setters) |
| ## ஜாவாஸ்கிரிப்ட் கெட்டர் (get முக்கியச்சொல் (keyword)) | ||
| இந்த எடுத்துக்காட்டு மொழிப் பண்பின் (language property) மதிப்பைப் பெற ஒரு lang பண்பைப் பயன்படுத்துகிறது. | ||
|
|
||
| ```sh |
| const name = "John"; | ||
| const greeting = `Hello, ${name}!`; | ||
| console.log(greeting); // Output: Hello, John! |
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
|
I’ve updated the suggestions. Please check them. |
d681c90 to
8996dc4
Compare
|
I have addressed all the feedback and applied the suggested fixes across all files. Could you please take another look? |
|
Thanks for the fixes, it's much better now. I notice that in the landing page there's a pdf button displayed for this translation. Is it possible to hide it as we don't have a pdf version? You can add the logic here. {% if lang.id != 'de' and lang.id != 'cn' %}
<a href="https://github.com/sumn2u/learn-javascript/raw/main/books/book_{{ lang.id }}.pdf" class="action-download">
<i class="fas fa-download"></i> PDF
</a>
{% endif %}
|
There was a problem hiding this comment.
🔵 Needs a closer look
A few newly added Tamil pages contain runnable code/navigation issues (e.g., broken TOC link and JavaScript examples that would error or create implicit globals) that should be corrected before merge.
Review details
Suppressed comments (4)
Previously missed (4) — in code that hasn't changed since the last review.
ta/basics/equality.md:36
- In the exercise starter code,
stringResult1is declared twice. The second declaration should bestringResult2to match the solution/validation variables.
ta/exercises/objects.md:31 - The example object literal references
person2before it is declared (significantOther: person2), which would throw aReferenceErrorif a learner runs this snippet. Initialize the references tonulland assign them after both objects are created.
ta/functions/README.md:50 - The chapter TOC links Closures to
./for-each.md, but that file does not exist underta/functions/(and the Closures content is inclosures.md). This link will be broken in the Tamil book navigation.
ta/functions/set-interval.md:18 - The surrounding text says the example logs "மீண்டும்!", but the code currently logs "மீண்டும்" (without the exclamation). This makes the example output inconsistent with the explanation.
- Files reviewed: 133/177 changed files
- Comments generated: 0 new
- Review effort level: Lite
| #description; | ||
|
|
||
| constructor(id, description, ) { | ||
| // Use setters instead of directly modifying the private fields |
There was a problem hiding this comment.
Think, readers will benefit from translated comment in this class.
| ## எடுத்துக்காட்டு | ||
|
|
||
| ```javascript | ||
| // Simulating an asynchronous operation with a callback |
There was a problem hiding this comment.
Is it possible to translate the commented content here?
|
|
||
| ```javascript | ||
| let text1 = `Hello World!`; | ||
| // template literals with both single and double code inside a single string |
There was a problem hiding this comment.
Is it possible to translate commented content as it talks about how template literals are defined.
|
Hi @sumn2u, I've addressed all your review suggestions: Added lang.id != 'ta' to hide the PDF button for Tamil (no PDF available) |

Description
This PR introduces a comprehensive Tamil (
ta) translation to the project to make learning JavaScript more accessible to Tamil-speaking developers.Changes Included
ta/directory containing the full Tamil translation of the course, including all chapters, beginner projects, and interview questions.ta/SUMMARY.mdandta/README.md.book.jsonandLANGS.md._layouts/website/languages.htmlto reflect the newly added language count.Verification
honkit serve/npm run build).talanguage book compiles successfully and all 171 pages are generated.Notes