The OneStream Community is temporarily frozen until June 29th due to the ongoing maintenance. Please read the blog post here to learn more.
Forum Discussion
MarcusH
3 years agoValued Contributor
Get member description in user's culture code
Does anyone know how to get the member description in the user's culture code?
- 3 years ago
ok, you can access the descriptions with the memberinfo object:
Dim MemberIdOfAccount As Integer = BRApi.Finance.Members.GetMemberId(si, DimTypeId.Account, "41010") Dim test As MemberInfo = BRApi.Finance.Members.GetMemberInfo(si, DimTypeId.Account, MemberIdOfAccount,,,New MemberDisplayOptions(True,"en-US",True,False,False,False,False,0)) BRApi.ErrorLog.LogMessage(si, test.Descriptions("en-US").Description & " " & test.Descriptions("fr-FR").Description)
JackLacava
OneStream Employee
3 years agoBRApi.Finance.Members.ReadMemberDescriptionsNoCache(si, dimTypeId, memberId) should give you all the descriptions, then you can loop through them. Each MemberDescription has a MemberDescriptionPK with a property for the language, i think.
- ChristianW3 years ago
OneStream Employee
Dim MemberIdOfAccount As Integer = BRApi.Finance.Members.GetMemberId(si, DimTypeId.Account, "41010") Dim list As List(Of MemberDescription) = BRApi.Finance.Members.ReadMemberDescriptionsNoCache(si, dimTypeId.Account, MemberIdOfAccount) Dim englisch As String = list.FirstOrDefault(Function(x) x.MemberDescriptionPk.Language = "en-US").Description Dim french As String = list.FirstOrDefault(Function(x) x.MemberDescriptionPk.Language = "fr-FR").Description BRApi.ErrorLog.LogMessage(si, englisch & " " & french)- WernerN2 years agoContributor II
I love 'Dim englisch'. Endlich ein Tip in Deutsch!
But seriously, thank you so much for the tip. Exactly what we need to derive local account descriptions. - WernerN2 years agoContributor II
Thanks again for these posts. I got the list function to work perfectly.
Do we also have a function that can write to MemberDescription?
I am researching the possibility of a 'translation function' to take in English, translate (with Google API, and write back to German Description (or any other language.- MarcusH2 years agoValued Contributor
In answer to your question I think the function SaveMemberInfo is what you want. The MarketPlace app AST has an example in Dashboard Extenders (sorry I can't remember what AST stands for). And it is also mentioned here but that is updating the security group not the member description.
However I looked at doing the same a while back and I realised that it was not going to work how I wanted. Firstly I needed to buy a licence of some sort to use Google for multiple requests like that (a single call is OK) and secondly who was going to review the translations and how. English has so many different meanings for the same word (off the top of my head I can think of 2 meanings for Account and 3 for Gross). Another aspect you need to consider is that this is just handling the member descriptions and does not include report names, cube view text, dashboards, confirmation rules etc. I decided that the best option (for me and my client at least) was to manage the translations in Excel and allow native speakers to review the translations. Then export that to XML and load it.
It is really simple to get Excel to translate text. I documented how you can update the other aspects of the application (ie XFStrings): https://marcushemy.wordpress.com/multi-language-applications-in-onestream/
There is a link to an Excel spreadsheet that imports and exports XML files for the XFStrings values. Also on the blog is a metadata manager which is a front-end for application XMLs. Those two pages should get you started on putting together something in Excel for translating and reviewing foreign languages if you decide to go down the Excel route.
- MarcusH3 years agoValued Contributor
ReadMemberDescriptionNoCache returns the list of aliases for the member (I've just tested it). If the member does not have an alias for a particular language it does not return anything. MemberDisplayOptions on the other hand returns the alias if it exists and the default value if there is no alias for the member which is what I want. Thank you for your time Jack. I will keep this in my little Rules bank.
- ChristianW3 years ago
OneStream Employee
Markus, you can use Jack's suggestion as well, I tested it and added a sample.
- MarcusH3 years agoValued Contributor
An hour ago I didn't know how to do it. Now I don't know which piece of code to use! Thank you Christian.