The Translate nodes module provides an easy way for teams of translators and
supervisors to devide work and utilize Google translate service as a helper.
The UI is helpful for translating as you can see the source field on the left
and destination field on the right, and you can even switch the source language
for some other available translation language.
-- FEATURES --
* A UI that makes translating nodes easy
* A workflow that allows easy organizing a team of translators and reviewing their work
* Utilizes Google translate per field for assistance
* Excluding unneccecary fields for better focus on the objective (automatic
exclusion of synchronized fields, and custom list exclusions)
* Internal link URL translations based on the language path aliases
* Translation outdated alert
* Language normalization tool - makes all the source nodes of the same language
https://www.drupal.org/sandbox/fermicoding/2322931
git clone --branch 7.x-1.x http://git.drupal.org/sandbox/fermicoding/2322931.git translate_nodes
Comments
Comment #1
geekygnr CreditAttribution: geekygnr commentedCoding style
The automated test found quite a few issues that should be addressed.
http://pareview.sh/pareview/httpgitdrupalorgsandboxfermicoding2322931git
The code is quite long, you may want to consider breaking it apart and using a .inc file for for your different pages.
For example I will normally make something like translate_nodes.admin.inc and put all the functions related to the admin pages in there. It will help with readability and reduce the amount of code that has to be loaded during the boot strap process.
Documentation
I would include some more in-line comments. I had a very hard time following your code. Other then that the documentation looks pretty good.
Git repository
Follows the standards for version based branch names.
Bugs
I enabled the modules and tried to create some new content and came across this error:
Comment #2
labboy0276 CreditAttribution: labboy0276 commentedAutomated Review
Code needs some work:
http://pareview.sh/pareview/httpgitdrupalorgsandboxfermicoding2322931git
Manual Review
https://www.drupal.org/project/gtranslate
Minor finding: Need to break up your code, your form elemenst should be in a .inc on an admin file of sorts
*Major finding: When I enable the module, I get a PDOException error
I would suggest reading DB API:
https://www.drupal.org/developing/api/database
https://api.drupal.org/api/drupal/includes%21database%21database.inc/gro...
If added, please don't remove the security tag, we keep that for statistics and to show examples of security problems.
This review uses the Project Application Review Template.
Comment #3
fermicoder CreditAttribution: fermicoder commentedHi.
I've amended the module per your suggestions. Separated the module in admin.inc and pages.inc.
The gtranslate module focuses on translating with google translate service whilst our module has this only as a feature that is not even enabled by default. The purpose of this module is to help translators who translate by hand, and have google translation only as an eventual helper.
Comment #4
PA robot CreditAttribution: PA robot commentedWe are currently quite busy with all the project applications and we prefer projects with a review bonus. Please help reviewing and put yourself on the high priority list, then we will take a look at your project right away :-)
Also, you should get your friends, colleagues or other community members involved to review this application. Let them go through the review checklist and post a comment that sets this issue to "needs work" (they found some problems with the project) or "reviewed & tested by the community" (they found no major flaws).
I'm a robot and this is an automated message from Project Applications Scraper.
Comment #5
rashid_786 CreditAttribution: rashid_786 commentedHi Thanks for your contribution,
I found something in sql query which can be improved by using PDO functionality
> file translate_nodes.admin.inc
> file translate_nodes.module
I would suggest to use PDO to access database because it is a consistent way to access the database.
https://api.drupal.org/api/drupal/includes!database!database.inc/group/database/7
Comment #6
fermicoder CreditAttribution: fermicoder commentedHi rashid_786,
thanks for your comment.
As I understand, there is an ongoing debate which is better, the PDO or the old way.
To my knowledge it is generally better to use PDOs for a select when the selecting is done from a node table - Drupal should have the ability to override the query for access restriction purposes for example.
My argument here is that the query is used in the setup process and is intended for the admin, hence no restrictions should apply. In other places it's used for translators who should have access to the nodes they are translating.
That being said, db_query is always faster then db_select, so for this module I would choose speed over consistency, until the debate is over at least, and there is a best practice guideline.
If there is, and I am unaware, please provide a link, and I'll be happy to do the changes.
Comment #7
ricovandevin CreditAttribution: ricovandevin commentedHi and thanks for your contribution.
As stated in the project description this module aims at making translation workflows easier by enabling users to divide workload and by using Google Translate. In what aspects does this module differ from the Translation Management Tool (https://www.drupal.org/project/tmgmt) that we already have?
Comment #8
fermicoder CreditAttribution: fermicoder commentedHello.
The difference between this module and tmgmt module is in the way the person responsible for the management of the translation process can do that job. He can have a clear overview of what is happening, including all the states of all ongoing translations as well as the abbility to (re)assign translators as needed, all in one page, in a table. This is in our view much more helpful then what tmgmt provides, especially because the translator list is role based, so one admin can setup everyone singlehandedly. To use tmgmt for this purpose, to my knowledge, all the translators should first setup their skillset.
Secondly there are other features, like changing source lang localy and globaly, utilizing the outdated flag etc.
Hope this answers your question.
Comment #9
kreynen CreditAttribution: kreynen commented@fermicoding did you discuss the desire to see these features in tmgmt with that projects maintainers?
This seems like a worthwhile UI improvement that could have been submitted to tmgmt or even provides as a module that provides an alternative UI.
I'm not following this at all. Both modules define permissions that are assign to roles...
http://cgit.drupalcode.org/sandbox-fermicoding-2322931/tree/translate_no...
http://cgit.drupalcode.org/tmgmt/tree/tmgmt.module#n216
I'm not seeing anything in this module that makes managing the translators any easier than tmgmt.
Comment #10
fermicoder CreditAttribution: fermicoder commented@kreynen the reason for making this module was that tmgmt had a different way of doing things than we needed. We made the module for our purposes and are now offering it to the community. I intentionally separated the previous answer in two parts, as the first part I believe is incompatible with the way tmgmt treats translators. If you don't control who is on your translating team, and have a pool of possibly a lot of potential translators (users who populate their skill settings), you can't have all those users ready in a n x m table cell select boxes. You can only have that if the list is small, as it is when you hand pick your translate team. This is what I meant by role based. tmgmt allows any user with a correct skill set to be a translator, while in our case they are hand picked (assigned to a role).
Comment #11
vanyamtv CreditAttribution: vanyamtv commentedWell, i think you need to add "i18n" module to your dependencies list, as you are using the function "i18n_language_list" in file translate_nodes.module, line: 285.
Thanks.
Comment #12
PA robot CreditAttribution: PA robot commentedClosing due to lack of activity. If you are still working on this application, you should fix all known problems and then set the status to "Needs review". (See also the project application workflow).
I'm a robot and this is an automated message from Project Applications Scraper.
Comment #13
fermicoder CreditAttribution: fermicoder commentedThanks vanyamtv.
Comment #14
kalpeshhiran CreditAttribution: kalpeshhiran as a volunteer commented@fermicoding I am not able to install your module due to dependency i18n_language_list and also I cant find this module anywhere. I have Internationalization( i18n) module installed. Please add help or any link to dependency.
Comment #15
davidam CreditAttribution: davidam commentedComment #16
PA robot CreditAttribution: PA robot commentedClosing due to lack of activity. If you are still working on this application, you should fix all known problems and then set the status to "Needs review". (See also the project application workflow).
I'm a robot and this is an automated message from Project Applications Scraper.
Comment #17
fermicoder CreditAttribution: fermicoder as a volunteer commented@kalpeshhiran dependency is now changed to i18n
Comment #18
yogesh045 CreditAttribution: yogesh045 commented@fermicoding still too many warnings and errors please do some important changes listed below.
1. Closing parenthesis of array declaration must be on a new line.
2. Array indentation error, expected 6 spaces but found 8.
3. Object operator not indented correctly; expected 6 spaces but found 10.
4. Inline comments must end in full-stops, exclamation marks, colons, question marks, or closing parentheses.
5. Expected 1 blank line after function.
6. Line must not exceeds 80 characters.
Thanks
Yogesh
Comment #19
Stevel CreditAttribution: Stevel commentedOther than that, as mentioned above, it duplicates functionality from other modules. It should be better to use the functionality from e.g. gtranslate instead of reimplementing it here.
Comment #20
PA robot CreditAttribution: PA robot commentedClosing due to lack of activity. If you are still working on this application, you should fix all known problems and then set the status to "Needs review". (See also the project application workflow).
I'm a robot and this is an automated message from Project Applications Scraper.