Request for improvement - Translation
Request for improvement - Translation
I'm in the process of updating to 5.7 from 4.6. We are a French speaking practice, so I'm also updating the translation of OD's menus and forms. I love the translation utility but at the same time would like to see some improvements/corrections, here is a list of the most important ones IMHO:
1. Some of the translated terms/sentences start showing up in the 'English' column.
2. English terms get duplicated (in FormDisplayFieldEditWords for example, each entry is repeated 15 times! Hopefully, in this specific case, changing one of them changes the others as well) or repeated with slight changes (commas, wording); it seems that items get added to the table when the corresponding OD feature is modified but the obsolete ones are not removed)
2. Certain fields (most notably in the chart module, the tabs for treatment, missing teeth, etc. and their contents) cannot be translated
3. Column headers' translation should be moved to the 'Setup display field' window or something similar, so that they can be translated/hidden and column widths can be adjusted accordingly (I think I remember this the intention behind this window, I can't wait to see it completed!)
4. Some translation tables get duplicated (e.g. Enum PatientGender is identical to EnumPatientGender).
5. The number of translation tables is quite important now, so there is a lot of duplicate entries for common terms, would it be possible to have a 'Common' table for all of these generic terms and sentences (such as Provider, OK, Show, Edit, Patient, Recall, Appointment, Please select an item first, Please correct the errors first, etc.)
I'll be glad to supply our languageforeign table if this can help investigate these issues.
1. Some of the translated terms/sentences start showing up in the 'English' column.
2. English terms get duplicated (in FormDisplayFieldEditWords for example, each entry is repeated 15 times! Hopefully, in this specific case, changing one of them changes the others as well) or repeated with slight changes (commas, wording); it seems that items get added to the table when the corresponding OD feature is modified but the obsolete ones are not removed)
2. Certain fields (most notably in the chart module, the tabs for treatment, missing teeth, etc. and their contents) cannot be translated
3. Column headers' translation should be moved to the 'Setup display field' window or something similar, so that they can be translated/hidden and column widths can be adjusted accordingly (I think I remember this the intention behind this window, I can't wait to see it completed!)
4. Some translation tables get duplicated (e.g. Enum PatientGender is identical to EnumPatientGender).
5. The number of translation tables is quite important now, so there is a lot of duplicate entries for common terms, would it be possible to have a 'Common' table for all of these generic terms and sentences (such as Provider, OK, Show, Edit, Patient, Recall, Appointment, Please select an item first, Please correct the errors first, etc.)
I'll be glad to supply our languageforeign table if this can help investigate these issues.
- jordansparks
- Site Admin
- Posts: 5770
- Joined: Sun Jun 17, 2007 3:59 pm
- Location: Salem, Oregon
- Contact:
Re: Request for improvement - Translation
1. That doesn't sound right. Which ones? We might have to just slog through some specific examples.
2. Keep in mind that any/all rows can be safely deleted from the language table. If the program runs across them, it will add them back. So it won't be too hard to add a "delete" function to let you delete, in bulk, entries that look wrong. In fact, that's so easy, that I could probably add it in about 15 minutes. It would allow you to tidy things up a bit.
2.5. I will look into that specific example.
3. Yes, that's the plan. It's functional now in Chart and Patient Select. Works great.
4. We do have a common category where the OK and Cancel button translations are supposed to happen. We could use it more. I don't remember what it's called.
I've sort of been putting off improvements until there was demand for it. I realize this is a somewhat critical feature. I think the main thing that went wrong is when we moved some of the logic to the business layer. We left the translation function as a stub there. I can go back and get that working again.
2. Keep in mind that any/all rows can be safely deleted from the language table. If the program runs across them, it will add them back. So it won't be too hard to add a "delete" function to let you delete, in bulk, entries that look wrong. In fact, that's so easy, that I could probably add it in about 15 minutes. It would allow you to tidy things up a bit.
2.5. I will look into that specific example.
3. Yes, that's the plan. It's functional now in Chart and Patient Select. Works great.
4. We do have a common category where the OK and Cancel button translations are supposed to happen. We could use it more. I don't remember what it's called.
I've sort of been putting off improvements until there was demand for it. I realize this is a somewhat critical feature. I think the main thing that went wrong is when we moved some of the logic to the business layer. We left the translation function as a stub there. I can go back and get that working again.
Jordan Sparks, DMD
http://www.opendental.com
http://www.opendental.com
Re: Request for improvement - Translation
Here are some cases
- in ContrAccount, the FR-CA translation of items Label, Email, Merge, Show entire history, Fam Urgent Fin note (actually 2 entries in the English column for this one, that don't even correspond to the latest translation) ...
- in Form Aging, the long description's (This tool recalculates...) translation appears twice in the English column
The following are related to my (first) 2nd point and do not appear to be the same issue, but just in case:
- in ContrCalendar the "Today: DATE" line (there should be only 1) is repeated many times
- in FormAnestheticsMedsEdit (which did not exist in 4.6), each entry is repeated twice
I've checked the tables with Navicat: the languageForeign table is OK, but the language table is messed up and these FR-CA entries and English duplicates, so maybe these two problems are somehow related.
- in ContrAccount, the FR-CA translation of items Label, Email, Merge, Show entire history, Fam Urgent Fin note (actually 2 entries in the English column for this one, that don't even correspond to the latest translation) ...
- in Form Aging, the long description's (This tool recalculates...) translation appears twice in the English column
The following are related to my (first) 2nd point and do not appear to be the same issue, but just in case:
- in ContrCalendar the "Today: DATE" line (there should be only 1) is repeated many times
- in FormAnestheticsMedsEdit (which did not exist in 4.6), each entry is repeated twice
I've checked the tables with Navicat: the languageForeign table is OK, but the language table is messed up and these FR-CA entries and English duplicates, so maybe these two problems are somehow related.
- jordansparks
- Site Admin
- Posts: 5770
- Joined: Sun Jun 17, 2007 3:59 pm
- Location: Salem, Oregon
- Contact:
Re: Request for improvement - Translation
1. Translated items showing up in the English column remains a mystery. None of the items you listed is even part of that page any longer. So it might be from an old bug.
But your main issue has been resolved. I added two delete buttons to the bottom of the translation page that should allow you to very quickly clear out the garbage. Then, I found the bug that was causing duplicate entries, so that should stop happening as well once you clear out the existing duplicates. I also changed a few usability issues that I ran into along the way. Changes made to version 5.8. The changes should be part of the next release to go out within a few days.
But your main issue has been resolved. I added two delete buttons to the bottom of the translation page that should allow you to very quickly clear out the garbage. Then, I found the bug that was causing duplicate entries, so that should stop happening as well once you clear out the existing duplicates. I also changed a few usability issues that I ran into along the way. Changes made to version 5.8. The changes should be part of the next release to go out within a few days.
Jordan Sparks, DMD
http://www.opendental.com
http://www.opendental.com
Re: Request for improvement - Translation
Thanks! I look forward to using this new feature (BTW, why 2 delete buttons? 1 per column?). Will the delete take care of the French entries in the Language table as well or will I have to edit the table with Navicat?
- jordansparks
- Site Admin
- Posts: 5770
- Joined: Sun Jun 17, 2007 3:59 pm
- Location: Salem, Oregon
- Contact:
Re: Request for improvement - Translation
One delete button is for selected rows. But that one wasn't going fast enough. I kept having to highlight a bunch of rows, click delete, and then do it again. So I added a smarter delete button that deletes any rows that don't have translations attached yet. Much better. You'll see.
Jordan Sparks, DMD
http://www.opendental.com
http://www.opendental.com
Re: Request for improvement - Translation
What's new about this question?:
2. Certain fields (most notably in the chart module, the tabs for treatment, missing teeth, etc. and their contents) cannot be translated
I work with translation and also can not translate theese fields.
2. Certain fields (most notably in the chart module, the tabs for treatment, missing teeth, etc. and their contents) cannot be translated
I work with translation and also can not translate theese fields.
- jordansparks
- Site Admin
- Posts: 5770
- Joined: Sun Jun 17, 2007 3:59 pm
- Location: Salem, Oregon
- Contact:
Re: Request for improvement - Translation
OK, just keep telling me which ones are missing. I'll go through all of the tabs right now.
Jordan Sparks, DMD
http://www.opendental.com
http://www.opendental.com
- jordansparks
- Site Admin
- Posts: 5770
- Joined: Sun Jun 17, 2007 3:59 pm
- Location: Salem, Oregon
- Contact:
Re: Request for improvement - Translation
Added to 7.0.
Jordan Sparks, DMD
http://www.opendental.com
http://www.opendental.com
Re: Request for improvement - Translation
I noticed some more fields wich can not be translated.
Patients module
Table Names - Family Members, Recall, Patient Information
All Patient table fields
Account Module
All fields in table Patient Account
Fields: -InsEst, =Balance, PatEstBal, Unearned, InsRem
Tab names: Main, Show
Buttons in Show tab: Today, Last 45 Days, Last 90 Days, All Dates
Treatment Plan module
Table Names: Treatment Plans, Procedures
Fields: Fam Ded
Priority values: Next, Low, Recmend, Wait
Appointments module
Radio buttons under calendar: day, week
Tab Names: Waiting, Emp
Table Names in tabs: Waiting room, Employee Schedules
FormApptEdit field: Fee This Appt
FormApptEdit field 'Confirmed' values: Unconfirmed, Left Msg on Ans Mach, Appointment Confirmed, Left Msg w Fam Mem, Not Home, Disconnected Number, Line Busy, E-mailed.
FormCommItem, field Type values: ApptRelated, Insurance, Financial, Recall, Misc
Manage module
Table name: Employee, Message History
Buttons: Send Claims, Billing, Deposits, SupplyInventory, Tasks, Backup, Accountind
Messaging fields: Extras, Message (&Send), Include acknowledged, button Ack
Patients module
Table Names - Family Members, Recall, Patient Information
All Patient table fields
Account Module
All fields in table Patient Account
Fields: -InsEst, =Balance, PatEstBal, Unearned, InsRem
Tab names: Main, Show
Buttons in Show tab: Today, Last 45 Days, Last 90 Days, All Dates
Treatment Plan module
Table Names: Treatment Plans, Procedures
Fields: Fam Ded
Priority values: Next, Low, Recmend, Wait
Appointments module
Radio buttons under calendar: day, week
Tab Names: Waiting, Emp
Table Names in tabs: Waiting room, Employee Schedules
FormApptEdit field: Fee This Appt
FormApptEdit field 'Confirmed' values: Unconfirmed, Left Msg on Ans Mach, Appointment Confirmed, Left Msg w Fam Mem, Not Home, Disconnected Number, Line Busy, E-mailed.
FormCommItem, field Type values: ApptRelated, Insurance, Financial, Recall, Misc
Manage module
Table name: Employee, Message History
Buttons: Send Claims, Billing, Deposits, SupplyInventory, Tasks, Backup, Accountind
Messaging fields: Extras, Message (&Send), Include acknowledged, button Ack
- jordansparks
- Site Admin
- Posts: 5770
- Joined: Sun Jun 17, 2007 3:59 pm
- Location: Salem, Oregon
- Contact:
Re: Request for improvement - Translation
The patient table in the Family module is translated using the Display Fields feature. Same for Account module.
Some items are translated in the Def edit window. This includes TP priority values, appt edit confirm values, and FormCommItem field types.
I'll get started on the others.
Some items are translated in the Def edit window. This includes TP priority values, appt edit confirm values, and FormCommItem field types.
I'll get started on the others.
Jordan Sparks, DMD
http://www.opendental.com
http://www.opendental.com
Re: Request for improvement - Translation
Hello, is there some news regarding translation?
- jordansparks
- Site Admin
- Posts: 5770
- Joined: Sun Jun 17, 2007 3:59 pm
- Location: Salem, Oregon
- Contact:
Re: Request for improvement - Translation
Family module
Table names all look translatable to me. Find them in ContrFamily.
Patient table is translated using the Display Fields.
Account Module
All fields in table Patient Account (already seems to be working)
Other items listed: Done
TP module
Table names already working
Fam Ded added
Priority values - user can edit from Defs.
Appt module
Radio buttons and tab names fixed
FormApptEdit
Fee This Appt added
Confirmed values - user can edit in Defs.
FormCommItem
user can edit in Defs
Manage module
Tablenames already available. See ContrStaff category.
Buttons already done.
Labels fixed.
All in version 7.2
Table names all look translatable to me. Find them in ContrFamily.
Patient table is translated using the Display Fields.
Account Module
All fields in table Patient Account (already seems to be working)
Other items listed: Done
TP module
Table names already working
Fam Ded added
Priority values - user can edit from Defs.
Appt module
Radio buttons and tab names fixed
FormApptEdit
Fee This Appt added
Confirmed values - user can edit in Defs.
FormCommItem
user can edit in Defs
Manage module
Tablenames already available. See ContrStaff category.
Buttons already done.
Labels fixed.
All in version 7.2
Jordan Sparks, DMD
http://www.opendental.com
http://www.opendental.com
Re: Request for improvement - Translation
Theese items are still not translatable:
Family module
table names Family Members, Recall, Patient Information - I can not find them in ContrFamily.
TP module
Table names: Treatment Plans, Procedures, Pre Authorizations
Appt module
Table Names in tabs: Waiting room, Employee Schedules
Manage module
Table names: Employees, Message History
And some new:
Appt module
Button LabCases
Buttons under calendar: M,W
Account Module
Button Questionaire
Family module
table names Family Members, Recall, Patient Information - I can not find them in ContrFamily.
TP module
Table names: Treatment Plans, Procedures, Pre Authorizations
Appt module
Table Names in tabs: Waiting room, Employee Schedules
Manage module
Table names: Employees, Message History
And some new:
Appt module
Button LabCases
Buttons under calendar: M,W
Account Module
Button Questionaire
- jordansparks
- Site Admin
- Posts: 5770
- Joined: Sun Jun 17, 2007 3:59 pm
- Location: Salem, Oregon
- Contact:
Re: Request for improvement - Translation
Table names and columns are not found under the name of the form. They are typically found under Table... For example, your first item is under TableFamily. I just added the missing buttons to the head.
Jordan Sparks, DMD
http://www.opendental.com
http://www.opendental.com
Re: Request for improvement - Translation
Dear Jordan,
I would like to ask you if you add the possibility of the translation. I need to translate name of the windows in the "Family Module". There are following windows: "Family Members", "Recall", "Patient Info". Is it possible to translate these name of windows (tables)? I can not find it (there is no TableFamily).
Thank you
Tomas
I would like to ask you if you add the possibility of the translation. I need to translate name of the windows in the "Family Module". There are following windows: "Family Members", "Recall", "Patient Info". Is it possible to translate these name of windows (tables)? I can not find it (there is no TableFamily).
Thank you
Tomas
Tomas Krejci
MobiDent s.r.o.
Czech Republic
MobiDent s.r.o.
Czech Republic
Re: Request for improvement - Translation
To translate the module names themselves you need to go into the "FormOpenDental" translation entry. There you will see entries for these modules:Tomas wrote:...I need to translate name of the windows in the "Family Module".
- Appts
- Family
- Account
- Treat' Plan
- Images
- Manage
Edit Patient Information window will be - FormPatientEdit
Patient Select window will be - FormPatientSelect
etc.
etc.
The best thing about a boolean is even if you are wrong, you are only off by a bit.
Jason Salmon
Open Dental Software
http://www.opendental.com
Jason Salmon
Open Dental Software
http://www.opendental.com
Re: Request for improvement - Translation
Dear Jason,
thank you for quick response. I understand that I can find the translation. But I still can not find the name of the windows in the module Family (in the picture)
. There is not name of the window in the translation table, everything others in the window is O.K. (see the picture)
. Could you help me?
Tomas
thank you for quick response. I understand that I can find the translation. But I still can not find the name of the windows in the module Family (in the picture)


Tomas
Tomas Krejci
MobiDent s.r.o.
Czech Republic
MobiDent s.r.o.
Czech Republic
Re: Request for improvement - Translation
Oh, the titles for the grids. I'll take a look into this cause the screenshots you shared would have been where I would have expected them to be.
The best thing about a boolean is even if you are wrong, you are only off by a bit.
Jason Salmon
Open Dental Software
http://www.opendental.com
Jason Salmon
Open Dental Software
http://www.opendental.com
Re: Request for improvement - Translation
The bug "Family Module Translations, the titles for the Family Members, Recall, Patient Information, Super Family, and Insurance Plan grids were not translatable" is fixed and will be released with v15.3.41 and v15.4.19.
The best thing about a boolean is even if you are wrong, you are only off by a bit.
Jason Salmon
Open Dental Software
http://www.opendental.com
Jason Salmon
Open Dental Software
http://www.opendental.com
Re: Request for improvement - Translation
Just a reminder, even though you probably already know this, you will have to restart Open Dental after adding your custom translations of the grid titles before they will take effect. This is unlike typical windows inside Open Dental because those grids are only translated once when the program first loads.
The best thing about a boolean is even if you are wrong, you are only off by a bit.
Jason Salmon
Open Dental Software
http://www.opendental.com
Jason Salmon
Open Dental Software
http://www.opendental.com
Re: Request for improvement - Translation
O.K. Thank you. I will wait.
Tomas Krejci
MobiDent s.r.o.
Czech Republic
MobiDent s.r.o.
Czech Republic
Re: Request for improvement - Translation
Jason, since you're at it
... Can you look into those one as well? Those preceded by an * are the most important for us
In the Chart module
* Right-click menu a progress note (Delete, Set Complete...)
* Drop-down menu items for Tooth Chart button (Save big, Save to images)
- Most grid tables titles (Patient Info, Procedures in Progress Notes, Planned Appointments, Chart Views)
- Procedure edit form Tab titles (Financial, Misc, Canada)
In the Family module
* Grid Tables Titles (Patient Information, Family Members, Recall, Insurance Plans)
* Language drop down menu in Patient Edit Window shows the right translation for none, then lists all available languages and "Declined to Specify" in English
* Button label Edit Postal in Patient Edit Window
In the Account module
- Treatment Plan grid table title
* Payment Plan window - the note that gets automatically added when a payment schedule is created (**** - Date of Agreement: **** Total Amount *** APR *** Total Cost of Loan ***), in this case we don't even want any automatic note at all
In the Treatment Plan module
* All grid Tables headers (Procedures, Treatment Plans, PreAuthorizations)
In the Staff module
- Batch Ins. button label
- Email Inbox button label
- Employee grid table header
- Message history grid table header
- Tasks grid table header
* Show Finished Tasks toggle and Start date label (that appears when the toggle is selected)
Thanks a lot!


In the Chart module
* Right-click menu a progress note (Delete, Set Complete...)
* Drop-down menu items for Tooth Chart button (Save big, Save to images)
- Most grid tables titles (Patient Info, Procedures in Progress Notes, Planned Appointments, Chart Views)
- Procedure edit form Tab titles (Financial, Misc, Canada)
In the Family module
* Grid Tables Titles (Patient Information, Family Members, Recall, Insurance Plans)
* Language drop down menu in Patient Edit Window shows the right translation for none, then lists all available languages and "Declined to Specify" in English
* Button label Edit Postal in Patient Edit Window
In the Account module
- Treatment Plan grid table title
* Payment Plan window - the note that gets automatically added when a payment schedule is created (**** - Date of Agreement: **** Total Amount *** APR *** Total Cost of Loan ***), in this case we don't even want any automatic note at all
In the Treatment Plan module
* All grid Tables headers (Procedures, Treatment Plans, PreAuthorizations)
In the Staff module
- Batch Ins. button label
- Email Inbox button label
- Employee grid table header
- Message history grid table header
- Tasks grid table header
* Show Finished Tasks toggle and Start date label (that appears when the toggle is selected)
Thanks a lot!
Re: Request for improvement - Translation
Absolutely! Thanks for pointing these things out and helping us make our software better.
We don't purposefully forget about translations
it's just really hard when we're so focused on getting new features out that translations quickly become an afterthought.
While fixing the aforementioned issues I'm also trying to think of a witty way to make it so that our entire software auto translates (not leaving it up to us forgetful software engineers). Here's to hoping I can figure something out!
We don't purposefully forget about translations

While fixing the aforementioned issues I'm also trying to think of a witty way to make it so that our entire software auto translates (not leaving it up to us forgetful software engineers). Here's to hoping I can figure something out!
The best thing about a boolean is even if you are wrong, you are only off by a bit.
Jason Salmon
Open Dental Software
http://www.opendental.com
Jason Salmon
Open Dental Software
http://www.opendental.com
Re: Request for improvement - Translation
Phew, that took much longer than I anticipated but much good came from it. I changed so much code to get the sections you complained about to work that I will only be able to take it back to the beta (v15.4). I still need to carefully review it with a colleague before I commit it so I won't get around to it till tomorrow. However, I wanted to point out a few oddities about some of the items you mentioned:
We had to make languages compatible with ISO639-2 format for our EHR certification. Therefore, we give a convenient list of supported languages (in English) for ease of use. These languages aren't actually stored in their plain text version but instead in the ISO639-2 format (e.g. eng = English). So it would be a feature request if you want us to do extra work to correctly translate the code into English, and then to show them up for you to translate within the Translation windows. OR you can remove all your current (incorrectly translated) languages and add them back manually (using the Custom text box / add button in lower left of the Language Definitions window) in their correctly translated forms (you'd have to do this anyway so why not). The downfall of removing the ISO639-2 format languages and then adding back custom languages is that any patients that have their language currently set will STAY the way they are. This is the hard part to describe... Each patient will always keep their current language (if you have set one) and it sticks EVEN IF IT'S NOT AN OPTION IN YOUR LIST. Some folks would say "yay my data can't be deleted", but I image you'll say "boo, it isn't automatically translated". Hence I mentioned the feature request first because that would automatically do it for you. Just thought you should know about this manual option. The nice part about it is that you can manually translate your languages now and have future patients be correct.
http://www.opendental.com/manual/languagedefs.html
Other than those two things I was able to correct the program to allow translating everything else you mentioned in your previous posting. I'll post back here again once it has been committed.
This is going to be tricky to describe but long story short you are in charge of the translations of languages (in newer versions at least).* Language drop down menu in Patient Edit Window shows the right translation for none, then lists all available languages and "Declined to Specify" in English
We had to make languages compatible with ISO639-2 format for our EHR certification. Therefore, we give a convenient list of supported languages (in English) for ease of use. These languages aren't actually stored in their plain text version but instead in the ISO639-2 format (e.g. eng = English). So it would be a feature request if you want us to do extra work to correctly translate the code into English, and then to show them up for you to translate within the Translation windows. OR you can remove all your current (incorrectly translated) languages and add them back manually (using the Custom text box / add button in lower left of the Language Definitions window) in their correctly translated forms (you'd have to do this anyway so why not). The downfall of removing the ISO639-2 format languages and then adding back custom languages is that any patients that have their language currently set will STAY the way they are. This is the hard part to describe... Each patient will always keep their current language (if you have set one) and it sticks EVEN IF IT'S NOT AN OPTION IN YOUR LIST. Some folks would say "yay my data can't be deleted", but I image you'll say "boo, it isn't automatically translated". Hence I mentioned the feature request first because that would automatically do it for you. Just thought you should know about this manual option. The nice part about it is that you can manually translate your languages now and have future patients be correct.
http://www.opendental.com/manual/languagedefs.html
I wrote the code to translate this note. I cannot remove the note all together (as a bug) because others may want / are using it. The removal of the automatic note will need to be a feature request.* Payment Plan window - the note that gets automatically added when a payment schedule is created (**** - Date of Agreement: **** Total Amount *** APR *** Total Cost of Loan ***), in this case we don't even want any automatic note at all
Other than those two things I was able to correct the program to allow translating everything else you mentioned in your previous posting. I'll post back here again once it has been committed.
The best thing about a boolean is even if you are wrong, you are only off by a bit.
Jason Salmon
Open Dental Software
http://www.opendental.com
Jason Salmon
Open Dental Software
http://www.opendental.com
Re: Request for improvement - Translation
Wow, thanks a lot Jason! That was fast!
Regarding the language option, I understand. I've tried to add the "custom" languages and it works fine. I've seen what you mean about keeping their existing language. We will have to change them all manually (...) or I'll do an update to the language field in the patient table. Is there any other table I need to update?
Regarding the language option, I understand. I've tried to add the "custom" languages and it works fine. I've seen what you mean about keeping their existing language. We will have to change them all manually (...) or I'll do an update to the language field in the patient table. Is there any other table I need to update?
Re: Request for improvement - Translation
The translations complained about above have been fixed and will be released with v15.4.21. I made some nice translation enhancements but was not able to fully automate the process for v16.1. Hopefully less and less "controls" get missed from here on out.
http://opendentalsoft.com:1942/ODBugTra ... sions.aspx
http://opendentalsoft.com:1942/ODBugTra ... sions.aspx
The best thing about a boolean is even if you are wrong, you are only off by a bit.
Jason Salmon
Open Dental Software
http://www.opendental.com
Jason Salmon
Open Dental Software
http://www.opendental.com
Re: Request for improvement - Translation
Thanks Jason.
There is another thing you may want to look into. In the translation window, sometimes, a translation entry gets duplicated several times. Also some translated text gets listed in the English column as well. I've used the Delete Selected and Delete Unused buttons to get rid of these, but they reappear when OD is restarted. Here is an example for the ContrChart translation (https://www.flickr.com/photos/mgrfabre_ ... 4496246305).
While looking into this problem, I realized that all the text messages we send out are also being appended to the language window and are shown in the FormTextMsgEdit translation window. I'm using MsgBox.Show() to display each outgoing text message in order for our staff to approve (or not) these messages before they are sent. That's my mistake as the text is variable. What should I use instead?
There is another thing you may want to look into. In the translation window, sometimes, a translation entry gets duplicated several times. Also some translated text gets listed in the English column as well. I've used the Delete Selected and Delete Unused buttons to get rid of these, but they reappear when OD is restarted. Here is an example for the ContrChart translation (https://www.flickr.com/photos/mgrfabre_ ... 4496246305).
While looking into this problem, I realized that all the text messages we send out are also being appended to the language window and are shown in the FormTextMsgEdit translation window. I'm using MsgBox.Show() to display each outgoing text message in order for our staff to approve (or not) these messages before they are sent. That's my mistake as the text is variable. What should I use instead?
Re: Request for improvement - Translation
Thanks for the screenshot, that helps me the most when looking into this kind of complaint!Mifa wrote:There is another thing you may want to look into. In the translation window, sometimes, a translation entry gets duplicated several times. Also some translated text gets listed in the English column as well. I've used the Delete Selected and Delete Unused buttons to get rid of these, but they reappear when OD is restarted. Here is an example for the ContrChart translation (https://www.flickr.com/photos/mgrfabre_ ... 4496246305).
If you are just showing the variable and no additional text you can use:Mifa wrote:While looking into this problem, I realized that all the text messages we send out are also being appended to the language window and are shown in the FormTextMsgEdit translation window. I'm using MsgBox.Show() to display each outgoing text message in order for our staff to approve (or not) these messages before they are sent. That's my mistake as the text is variable. What should I use instead?
Code: Select all
MessageBox.Show(variable);
Code: Select all
MessageBox.Show(Lan.g(this,"Translation text goes here! This variable will not translate:")+variable);
The best thing about a boolean is even if you are wrong, you are only off by a bit.
Jason Salmon
Open Dental Software
http://www.opendental.com
Jason Salmon
Open Dental Software
http://www.opendental.com
Re: Request for improvement - Translation
I'm unable to duplicate your screenshot and looking at the code for the "All Dates" translation I don't see how it is possible to even get duplicated once. The most common way would be the following example:Mifa wrote:There is another thing you may want to look into. In the translation window, sometimes, a translation entry gets duplicated several times.
Lan.g(this,"All Dates")...
Lan.g(this,"All Dates ")... <-- contains white space at the end of the translation.
However, I only see one place where the phrase All Dates is even translated in the ContrChart (should be in two places which I fixed in v15.4.22) and it does it correctly. What version of Open Dental are you using because it might just be an old bug that isn't showing its face to me. Maybe another example would be helpful as well.
This is most likely from your plugins. Any time you have a control on a new form that you show (e.g. a button) it will send whatever default text you have on it into the English column of the translations table.Mifa wrote:Also some translated text gets listed in the English column as well.
So the fact that there is...
Code: Select all
English | French (Canada) | Other French...
---------------------------------------------------------
Add | Ajouter |
Ajouter | |
The best thing about a boolean is even if you are wrong, you are only off by a bit.
Jason Salmon
Open Dental Software
http://www.opendental.com
Jason Salmon
Open Dental Software
http://www.opendental.com
Re: Request for improvement - Translation
Thanks Jason for your replies.
I will follow your guidelines for the message box. We are on version 14.3, sorry I forgot to mention that and I do not have any customization that affects labels or create buttons. If you send me a PM, I will forward you my change log as well as our language and languageforeign tables.
I'm giving you below some more instances of duplicated text and "translation crossing language boundaries". As I don't see all these duplicates in the language table (some do appear multiple times though), might it be that some portions of code are being executed several times when the table is displayed?
For duplicated text, in addition to ContrChart (I went down the list in the translation table and did not check past FormImport) :
FormBackup - Backup, Browse, Restore, Restore A-Z...
FormChooseDatabase - Connect to Middle Tier instead, Connect to Middle Tier - Only..., Read the manual to learn...,
FormClaimCanadian - No, Not a lower bridge..., Prosthesis Material, Yes, Initial Date
FormDocInfo - OpenFolder (I did not even translate this one, it is listed 3 times)
FormEasy - Hide Hospital Features
FormEmailSetup - smtp.comcast.net..., There is no way...
FormImagingSetup - 0-100. 100=No compression..., > 50 Typical setting..., Default pixel windowing..., Documents - ..., Exposure..., Imaging Quality, JPEG Compression quality After Scannning, Sensor Port...,Sensor type...
FormImport - Capitalize, Clear, Column, Destination Col, Destination Column, Fill, Guarantor, Import, Source Column,
Regarding the cross-boundaries translation, in addition to ContrChart:
FormAging - the translation for "If you use monthly billing instead of daily..."
FormAnestheticRecord - I show "Annuler" then "Supprimer" but none are actual translation for anything in this form.
FormEmailSetup - smtp.comcast.net... (also duplicated 5 times)
I will follow your guidelines for the message box. We are on version 14.3, sorry I forgot to mention that and I do not have any customization that affects labels or create buttons. If you send me a PM, I will forward you my change log as well as our language and languageforeign tables.
I'm giving you below some more instances of duplicated text and "translation crossing language boundaries". As I don't see all these duplicates in the language table (some do appear multiple times though), might it be that some portions of code are being executed several times when the table is displayed?
For duplicated text, in addition to ContrChart (I went down the list in the translation table and did not check past FormImport) :
FormBackup - Backup, Browse, Restore, Restore A-Z...
FormChooseDatabase - Connect to Middle Tier instead, Connect to Middle Tier - Only..., Read the manual to learn...,
FormClaimCanadian - No, Not a lower bridge..., Prosthesis Material, Yes, Initial Date
FormDocInfo - OpenFolder (I did not even translate this one, it is listed 3 times)
FormEasy - Hide Hospital Features
FormEmailSetup - smtp.comcast.net..., There is no way...
FormImagingSetup - 0-100. 100=No compression..., > 50 Typical setting..., Default pixel windowing..., Documents - ..., Exposure..., Imaging Quality, JPEG Compression quality After Scannning, Sensor Port...,Sensor type...
FormImport - Capitalize, Clear, Column, Destination Col, Destination Column, Fill, Guarantor, Import, Source Column,
Regarding the cross-boundaries translation, in addition to ContrChart:
FormAging - the translation for "If you use monthly billing instead of daily..."
FormAnestheticRecord - I show "Annuler" then "Supprimer" but none are actual translation for anything in this form.
FormEmailSetup - smtp.comcast.net... (also duplicated 5 times)
Re: Request for improvement - Translation
Another instance of text not being translated (at least until 14.3). In ContrAccount, all the menu items in the context menu statement: Walkout, Email, Receipt, More Options. These menu items get all created using code like this.menuItemStatement***.Text = "***"; lan.g is not used
Re: Request for improvement - Translation
No, we purposefully designed the translations to get hit A LOT for the same translation text. E.g. the Waiting Room grid in the Appts module gets translated once every second! If there was a bug with repetition then TableApptWaiting would be overflowing with duplicate entries.Mifa wrote:I'm giving you below some more instances of duplicated text and "translation crossing language boundaries". As I don't see all these duplicates in the language table (some do appear multiple times though), might it be that some portions of code are being executed several times when the table is displayed?
The best thing about a boolean is even if you are wrong, you are only off by a bit.
Jason Salmon
Open Dental Software
http://www.opendental.com
Jason Salmon
Open Dental Software
http://www.opendental.com
Re: Request for improvement - Translation
Bug "Translations, the New Claim and Statement context menu items in the Account module were not getting translated" is fixed and will be released with v15.4.22Mifa wrote:Another instance of text not being translated (at least until 14.3). In ContrAccount, all the menu items in the context menu statement: Walkout, Email, Receipt, More Options. These menu items get all created using code like this.menuItemStatement***.Text = "***"; lan.g is not used
The best thing about a boolean is even if you are wrong, you are only off by a bit.
Jason Salmon
Open Dental Software
http://www.opendental.com
Jason Salmon
Open Dental Software
http://www.opendental.com
Re: Request for improvement - Translation
I couldn't get any of these to duplicate in the newer version of Open Dental. I think I'll wait till you update > remove all instances of FormBackup - Backup > Open FormBackup > Go back to Translations and see if there is only one entry this time. If you get the duplicates back at that point then I'll PM you for a copy of your entire database cause it might be some sort of set up that I have differently or maybe the CHARSET you have on your tables or something else not Open Dental related that I just don't have in my environment.Mifa wrote:For duplicated text, in addition to ContrChart (I went down the list in the translation table and did not check past FormImport) :
FormBackup - Backup, Browse, Restore, Restore A-Z...
The best thing about a boolean is even if you are wrong, you are only off by a bit.
Jason Salmon
Open Dental Software
http://www.opendental.com
Jason Salmon
Open Dental Software
http://www.opendental.com
Re: Request for improvement - Translation
hi Jason,
I have downloaded and compiled 15.4.22. I've copied the required dll's (hunspell) to the release and debug directory and run the program. It failed during database conversion: "You have an error in your SQL Syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ')' at line 1. Conversion unsuccessful. Your database is not corrupted and you cannot use it. Please contact us."
We have MySQL server 5.5. I don't know if it helps, but I've checked the MySQL server variables with Navicat, and all character_sets are UTF-8, except character_set_filesystem (binary) and character_set_server (latin1).
The conversion process was about 1/3 done and the last table converted seems to have been task.
The exception Ive received from OD goes as follows:
I have downloaded and compiled 15.4.22. I've copied the required dll's (hunspell) to the release and debug directory and run the program. It failed during database conversion: "You have an error in your SQL Syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ')' at line 1. Conversion unsuccessful. Your database is not corrupted and you cannot use it. Please contact us."
We have MySQL server 5.5. I don't know if it helps, but I've checked the MySQL server variables with Navicat, and all character_sets are UTF-8, except character_set_filesystem (binary) and character_set_server (latin1).
The conversion process was about 1/3 done and the last table converted seems to have been task.
The exception Ive received from OD goes as follows:
Code: Select all
See the end of this message for details on invoking
just-in-time (JIT) debugging instead of this dialog box.
************** Exception Text **************
System.Exception: TempFolderDateFirstCleaned is an invalid pref name.
at OpenDentBusiness.PrefC.GetDate(PrefName prefName) in c:\Users\Michel\Desktop\opendental15.4\OpenDentBusiness\Cache\PrefC.cs:line 160
at OpenDental.PrefL.GetTempFolderPath() in c:\Users\Michel\Desktop\opendental15.4\OpenDental\Data Interface\PrefL.cs:line 617
at OpenDental.FormOpenDental.FormOpenDental_FormClosing(Object sender, FormClosingEventArgs e) in c:\Users\Michel\Desktop\opendental15.4\OpenDental\Main Modules\FormOpenDental.cs:line 7545
at System.Windows.Forms.Form.OnFormClosing(FormClosingEventArgs e)
at System.Windows.Forms.Form.RaiseFormClosingOnAppExit()
at System.Windows.Forms.Application.ExitInternal()
at System.Windows.Forms.Application.Exit(CancelEventArgs e)
at OpenDental.PrefL.ConvertDB(Boolean silent, String toVersion) in c:\Users\Michel\Desktop\opendental15.4\OpenDental\Data Interface\PrefL.cs:line 30
at OpenDental.FormOpenDental.PrefsStartup(Boolean isSilentUpdate) in c:\Users\Michel\Desktop\opendental15.4\OpenDental\Main Modules\FormOpenDental.cs:line 2679
at OpenDental.FormOpenDental.FormOpenDental_Load(Object sender, EventArgs e) in c:\Users\Michel\Desktop\opendental15.4\OpenDental\Main Modules\FormOpenDental.cs:line 2246
at System.Windows.Forms.Form.OnLoad(EventArgs e)
at System.Windows.Forms.Form.OnCreateControl()
at System.Windows.Forms.Control.CreateControl(Boolean fIgnoreVisible)
at System.Windows.Forms.Control.CreateControl()
at System.Windows.Forms.Control.WmShowWindow(Message& m)
at System.Windows.Forms.Control.WndProc(Message& m)
at System.Windows.Forms.ScrollableControl.WndProc(Message& m)
at System.Windows.Forms.ContainerControl.WndProc(Message& m)
at System.Windows.Forms.Form.WmShowWindow(Message& m)
at System.Windows.Forms.Form.WndProc(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
************** Loaded Assemblies **************
mscorlib
Assembly Version: 4.0.0.0
Win32 Version: 4.0.30319.34209 built by: FX452RTMGDR
CodeBase: file:///C:/Windows/Microsoft.NET/Framework/v4.0.30319/mscorlib.dll
----------------------------------------
OpenDental
Assembly Version: 15.4.22.0
Win32 Version: 15.4.22.0
CodeBase: file:///C:/Users/Michel/Desktop/opendental15.4/OpenDental/bin/Release/OpenDental.exe
----------------------------------------
System.Windows.Forms
Assembly Version: 4.0.0.0
Win32 Version: 4.0.30319.34251 built by: FX452RTMGDR
CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Windows.Forms/v4.0_4.0.0.0__b77a5c561934e089/System.Windows.Forms.dll
----------------------------------------
System.Drawing
Assembly Version: 4.0.0.0
Win32 Version: 4.0.30319.34270 built by: FX452RTMGDR
CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Drawing/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Drawing.dll
----------------------------------------
System
Assembly Version: 4.0.0.0
Win32 Version: 4.0.30319.34238 built by: FX452RTMGDR
CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System/v4.0_4.0.0.0__b77a5c561934e089/System.dll
----------------------------------------
CodeBase
Assembly Version: 15.4.1.0
Win32 Version: 15.4.1.0
CodeBase: file:///C:/Users/Michel/Desktop/opendental15.4/OpenDental/bin/Release/CodeBase.DLL
----------------------------------------
OpenDentBusiness
Assembly Version: 15.4.22.0
Win32 Version: 15.4.22.0
CodeBase: file:///C:/Users/Michel/Desktop/opendental15.4/OpenDental/bin/Release/OpenDentBusiness.DLL
----------------------------------------
System.Configuration
Assembly Version: 4.0.0.0
Win32 Version: 4.0.30319.34209 built by: FX452RTMGDR
CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Configuration/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Configuration.dll
----------------------------------------
System.Xml
Assembly Version: 4.0.0.0
Win32 Version: 4.0.30319.34234 built by: FX452RTMGDR
CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Xml/v4.0_4.0.0.0__b77a5c561934e089/System.Xml.dll
----------------------------------------
NHunspell
Assembly Version: 0.9.6.0
Win32 Version: 0.9.6.0
CodeBase: file:///C:/Users/Michel/Desktop/opendental15.4/OpenDental/bin/Release/NHunspell.DLL
----------------------------------------
SparksToothChart
Assembly Version: 4.7.1.0
Win32 Version: 4.7.1.0
CodeBase: file:///C:/Users/Michel/Desktop/opendental15.4/OpenDental/bin/Release/SparksToothChart.DLL
----------------------------------------
Microsoft.DirectX.Direct3D
Assembly Version: 1.0.2902.0
Win32 Version: 9.05.132.0000
CodeBase: file:///C:/Windows/assembly/GAC/Microsoft.DirectX.Direct3D/1.0.2902.0__31bf3856ad364e35/Microsoft.DirectX.Direct3D.dll
----------------------------------------
xImageDeviceManager
Assembly Version: 1.0.0.0
Win32 Version: 1.0.0.0
CodeBase: file:///C:/Users/Michel/Desktop/opendental15.4/OpenDental/bin/Release/xImageDeviceManager.DLL
----------------------------------------
SigPlusNET
Assembly Version: 1.1.4050.24928
Win32 Version:
CodeBase: file:///C:/Users/Michel/Desktop/opendental15.4/OpenDental/bin/Release/SigPlusNET.DLL
----------------------------------------
msvcm90
Assembly Version: 9.0.30729.6161
Win32 Version: 9.00.30729.6161
CodeBase: file:///C:/Windows/WinSxS/x86_microsoft.vc90.crt_1fc8b3b9a1e18e3b_9.0.30729.6161_none_50934f2ebcb7eb57/msvcm90.dll
----------------------------------------
System.Web.Services
Assembly Version: 4.0.0.0
Win32 Version: 4.0.30319.34209 built by: FX452RTMGDR
CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Web.Services/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Web.Services.dll
----------------------------------------
OpenDental.XmlSerializers
Assembly Version: 15.4.22.0
Win32 Version: 15.4.22.0
CodeBase: file:///C:/Users/Michel/Desktop/opendental15.4/OpenDental/bin/Release/OpenDental.XmlSerializers.DLL
----------------------------------------
AxInterop.AcroPDFLib
Assembly Version: 1.0.0.0
Win32 Version: 1.0.0.0
CodeBase: file:///C:/Users/Michel/Desktop/opendental15.4/OpenDental/bin/Release/AxInterop.AcroPDFLib.DLL
----------------------------------------
System.Data
Assembly Version: 4.0.0.0
Win32 Version: 4.0.30319.34209 built by: FX452RTMGDR
CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_32/System.Data/v4.0_4.0.0.0__b77a5c561934e089/System.Data.dll
----------------------------------------
CDT
Assembly Version: 12.3.20.0
Win32 Version: 12.3.20.0
CodeBase: file:///C:/Users/Michel/Desktop/opendental15.4/OpenDental/bin/Release/CDT.DLL
----------------------------------------
MySql.Data
Assembly Version: 6.2.4.0
Win32 Version: 6.2.4.0
CodeBase: file:///C:/Users/Michel/Desktop/opendental15.4/OpenDental/bin/Release/MySql.Data.DLL
----------------------------------------
System.Transactions
Assembly Version: 4.0.0.0
Win32 Version: 4.0.30319.34209 built by: FX452RTMGDR
CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_32/System.Transactions/v4.0_4.0.0.0__b77a5c561934e089/System.Transactions.dll
----------------------------------------
Oracle.DataAccess
Assembly Version: 2.112.3.0
Win32 Version: 2.112.3.0
CodeBase: file:///C:/Users/Michel/Desktop/opendental15.4/OpenDental/bin/Release/Oracle.DataAccess.DLL
----------------------------------------
System.EnterpriseServices
Assembly Version: 4.0.0.0
Win32 Version: 4.0.30319.34209 built by: FX452RTMGDR
CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_32/System.EnterpriseServices/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.EnterpriseServices.dll
----------------------------------------
System.Numerics
Assembly Version: 4.0.0.0
Win32 Version: 4.0.30319.34209 built by: FX452RTMGDR
CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Numerics/v4.0_4.0.0.0__b77a5c561934e089/System.Numerics.dll
----------------------------------------
System.Web
Assembly Version: 4.0.0.0
Win32 Version: 4.0.30319.34280 built by: FX452RTMGDR
CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_32/System.Web/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Web.dll
----------------------------------------
System.Core
Assembly Version: 4.0.0.0
Win32 Version: 4.0.30319.34209 built by: FX452RTMGDR
CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Core/v4.0_4.0.0.0__b77a5c561934e089/System.Core.dll
----------------------------------------
************** JIT Debugging **************
To enable just-in-time (JIT) debugging, the .config file for this
application or computer (machine.config) must have the
jitDebugging value set in the system.windows.forms section.
The application must also be compiled with debugging
enabled.
For example:
<configuration>
<system.windows.forms jitDebugging="true" />
</configuration>
When JIT debugging is enabled, any unhandled exception
will be sent to the JIT debugger registered on the computer
rather than be handled by this dialog box.
Re: Request for improvement - Translation
Oh no, the first error during the conversion (syntax error) is the core of the problem. I need a copy of your database so that I can fix our convert script (very scary). Due to that error your upgrade didn't finish thus you didn't have something (a preference in this case) that the code was expecting thus the closing event of Open Dental was trying to utilize a new feature that we added and it assumed you had it present hence you got the second error. Once we fix the first error, the second will never happen. I'll send you a PM to get a copy of the automatic backup that Open Dental created just before it tried to upgrade your db.
The best thing about a boolean is even if you are wrong, you are only off by a bit.
Jason Salmon
Open Dental Software
http://www.opendental.com
Jason Salmon
Open Dental Software
http://www.opendental.com
Re: Request for improvement - Translation
It looks like you manually translated some of your definitions within the database. I'm not sure how to approach this yet and need to think it through but long story short we make some assumptions about the database and need the ability to select very specific definitions but your database will not return any definition because the def name doesn't match (e.g. we look for "Default" which is an item name that users cannot edit from within Open Dental but your db has "Défaut"). Since we assume this is impossible, we allow the program to crash and flag the database as corrupt because in our eyes it is "corrupt".
I can see why you did this though because we do not currently give you a way to translate these definition item names (what I'm considering a bug). The hard part in all of this is that SOME definitions ARE user defined (thus you have already translated them) so I can't just slap on our typical translation pattern because then already translated words would start showing up in the English column of the Translations window. I'll try and come up with a course of action to take. My guess as of right now is that I'm going to provide you with a query to run so that your database gets put back to the way we are expecting it to be and then I'll make a bug fix in v15.4 that will allow you to translate these specific definitions via the Translations window instead of via manual manipulation.
I can see why you did this though because we do not currently give you a way to translate these definition item names (what I'm considering a bug). The hard part in all of this is that SOME definitions ARE user defined (thus you have already translated them) so I can't just slap on our typical translation pattern because then already translated words would start showing up in the English column of the Translations window. I'll try and come up with a course of action to take. My guess as of right now is that I'm going to provide you with a query to run so that your database gets put back to the way we are expecting it to be and then I'll make a bug fix in v15.4 that will allow you to translate these specific definitions via the Translations window instead of via manual manipulation.
The best thing about a boolean is even if you are wrong, you are only off by a bit.
Jason Salmon
Open Dental Software
http://www.opendental.com
Jason Salmon
Open Dental Software
http://www.opendental.com
Re: Request for improvement - Translation
Finally finished making the script and making it so that you can translate definitions that are not supposed to be user editable. I'll be sending you a PM with instructions instead of on this public thread because the script will be specific to your database and would be detrimental for other databases if run on them. I need to get everything second-checked by another engineer first so it might be a day or two.
The best thing about a boolean is even if you are wrong, you are only off by a bit.
Jason Salmon
Open Dental Software
http://www.opendental.com
Jason Salmon
Open Dental Software
http://www.opendental.com
Re: Request for improvement - Translation
Thanks a lot Jason. On my side, I've been trying to update from 14.4 one version at a time. I've been able to (successfully?) convert our test DB up to 15.3.36. However, when I use OD, the account module, starting with 15.2.29 is crashing (I've sent you a PM with the exception notes). It may be related to this same data problem... or not.