Crafting Writ Assistant - Need French and German... BUT welcome other Languages

Hello,

Can I please get help with translation, please post the language conversion from English to French, German, Spanish or any others below along with what language they are for. I really appreciate it!! I am expanding Crafting Writ Assistant and would like to add as many languages as possible.

ZO_CreateStringId("SI_CWA_DISPLAY_AT_STATION_NAME", "Display at crafting station")
ZO_CreateStringId("SI_CWA_DISPLAY_AT_STATION_DESC", "This will display the writ window when you visit a crafting station.")

Thanks Ayantir! This is great information.. I'll be working on updating the addon to use the built in ZOS strings for weapons and other you mentioned tonight . I appreciate you taking the time to translate these for me when you get time.

Actually, some of those, afaik, should be translated. (namely, the Writ names, Masterful, the completion texts. I don't think there's any way to get them.

You should be able to find them in the Writ Crafter though! I've already 'translated' most of the strings, (i.e. changed client language to German and French) so no need to do it twice. I also have the weapon and armour strings too, actually.

First of all, Ayantir is correct in regards to the crafting skill names, in a way. Not in the method, which doesn't work. But there is a way to obtain the names programatically: GetCraftingSkillName(craftingSkillType)

As far as I am able to determine, he is completely wrong about the weapon types. Some do work; but not all. You'll be missing certain types of weapons, for example, greatsword, maul, etc. Actually, if he checked, d(GetString("SI_ITEMTYPE", WEAPONTYPE_BOW)) outputs not Bow, but Motif. You'd need to use d(GetString("SI_WEAPONTYPE", WEAPONTYPE_BOW)) instead.d(GetString("SI_ITEMTYPE", ITEMTYPE_WEAPON)) does work. Master writ indicators must be hardcoded, as well as the writ names.
French:
-- CRAFTING_WRIT_TYPE_NAME-- Ok, not quite sure how these combine, but "Writ" is "Commande" and: [CRAFTING_TYPE_ENCHANTING] = "d'enchantement",
[CRAFTING_TYPE_BLACKSMITHING] = "forge",
[CRAFTING_TYPE_CLOTHIER] = "tailleur",
[CRAFTING_TYPE_PROVISIONING] = "cuisine",
[CRAFTING_TYPE_WOODWORKING] = "bois",
[CRAFTING_TYPE_ALCHEMY] = "d'alchimie",

--Blacksmith -- I don't know the full use case/when you need this, so there might be a better option than hardcoding it. And no, you don't have the weapon names anywhere really as a ZOS string, but you can get the names while at a crafting station.
ZO_CreateStringId("SI_CWA_DAGGER", "dague")
ZO_CreateStringId("SI_CWA_SWORD", "épée")
ZO_CreateStringId("SI_CWA_GREATSWORD", "longue")
ZO_CreateStringId("SI_CWA_MACE", "masse")
ZO_CreateStringId("SI_CWA_AXE", "hache")
ZO_CreateStringId("SI_CWA_MAUL", "d'arme")
--Woodworking
ZO_CreateStringId("SI_CWA_STAFF", "Staff") -- didn't have this one, actually.
ZO_CreateStringId("SI_CWA_BOW", "arc")
ZO_CreateStringId("SI_CWA_SHEILD", "bouclier")

--MASTER WRIT COMPLETE TEXT -- Can all be replaced by checking the progress values on the quest! -- If the current and max are equal, then you know they're done.

First of all, Ayantir is correct in regards to the crafting skill names, in a way. Not in the method, which doesn't work. But there is a way to obtain the names programatically: GetCraftingSkillName(craftingSkillType)

As far as I am able to determine, he is completely wrong about the weapon types. Some do work; but not all. You'll be missing certain types of weapons, for example, greatsword, maul, etc. Actually, if he checked, d(GetString("SI_ITEMTYPE", WEAPONTYPE_BOW)) outputs not Bow, but Motif. You'd need to use d(GetString("SI_WEAPONTYPE", WEAPONTYPE_BOW)) instead.d(GetString("SI_ITEMTYPE", ITEMTYPE_WEAPON)) does work. Master writ indicators must be hardcoded, as well as the writ names.
French:
-- CRAFTING_WRIT_TYPE_NAME-- Ok, not quite sure how these combine, but "Writ" is "Commande" and: [CRAFTING_TYPE_ENCHANTING] = "d'enchantement",
[CRAFTING_TYPE_BLACKSMITHING] = "forge",
[CRAFTING_TYPE_CLOTHIER] = "tailleur",
[CRAFTING_TYPE_PROVISIONING] = "cuisine",
[CRAFTING_TYPE_WOODWORKING] = "bois",
[CRAFTING_TYPE_ALCHEMY] = "d'alchimie",

--Blacksmith -- I don't know the full use case/when you need this, so there might be a better option than hardcoding it. And no, you don't have the weapon names anywhere really as a ZOS string, but you can get the names while at a crafting station.
ZO_CreateStringId("SI_CWA_DAGGER", "dague")
ZO_CreateStringId("SI_CWA_SWORD", "épée")
ZO_CreateStringId("SI_CWA_GREATSWORD", "longue")
ZO_CreateStringId("SI_CWA_MACE", "masse")
ZO_CreateStringId("SI_CWA_AXE", "hache")
ZO_CreateStringId("SI_CWA_MAUL", "d'arme")
--Woodworking
ZO_CreateStringId("SI_CWA_STAFF", "Staff") -- didn't have this one, actually.
ZO_CreateStringId("SI_CWA_BOW", "arc")
ZO_CreateStringId("SI_CWA_SHEILD", "bouclier")

--MASTER WRIT COMPLETE TEXT -- Can all be replaced by checking the progress values on the quest! -- If the current and max are equal, then you know they're done.

The GetCraftingSkillName(craftingSkillType) API call returns "Blacksmithing" , "Woodworking" etc, basically this isn't what I need for identifying what the "writ name" is , I use these values to populate my dropdown when you visit a crafting station so it auto selects your current writ.

As for you questions about my Use cases. the MASTER_WRIT_TEXT_INDICATORS are text that a master writ quest name would "Contain" so I can identify if this is a master writ of a particular type, the API only tells us this is a "crafting quest type" and Master Writ blacksmith quests appear the same as normal "Blacksmith writ" quests, also the text for in the case of English is "A Masterful Weapon" for both the "Blacksmith" master quest and the "Woodworking" master quest. This leads me to use the "MASTER_WRIT_WEAPON_TYPE_INDICATORS", in this case the word "Weapon" is present in both quests, when you have them both in your Journal. I look into the quest "steps" and the "conditions" to determine if this is a Blacksmithing or woodworker quest, by using the SI_CWA_DAGGER and SI_CWA_SWORD or SI_CWA_BOW to see if this is a Blacksmith or woodworking quest. this helps me determine the CraftingSkillName based on these details.

I was able to use your suggestion and switch my client to FR to get the word "Staff" from the quest details, it was Baton.

I'm primarily a developer for C#, SQL and other languages and I'm a new to LUA and addon development in general but its fun any suggestions or recommendations are welcome..

The GetCraftingSkillName(craftingSkillType) API call returns "Blacksmithing" , "Woodworking" etc, basically this isn't what I need for identifying what the "writ name" is , I use these values to populate my dropdown when you visit a crafting station so it auto selects your current writ.

As for you questions about my Use cases. the MASTER_WRIT_TEXT_INDICATORS are text that a master writ quest name would "Contain" so I can identify if this is a master writ of a particular type, the API only tells us this is a "crafting quest type" and Master Writ blacksmith quests appear the same as normal "Blacksmith writ" quests, also the text for in the case of English is "A Masterful Weapon" for both the "Blacksmith" master quest and the "Woodworking" master quest. This leads me to use the "MASTER_WRIT_WEAPON_TYPE_INDICATORS", in this case the word "Weapon" is present in both quests, when you have them both in your Journal. I look into the quest "steps" and the "conditions" to determine if this is a Blacksmithing or woodworker quest, by using the SI_CWA_DAGGER and SI_CWA_SWORD or SI_CWA_BOW to see if this is a Blacksmith or woodworking quest. this helps me determine the CraftingSkillName based on these details.

I was able to use your suggestion and switch my client to FR to get the word "Staff" from the quest details, it was Baton.

I'm primarily a developer for C#, SQL and other languages and I'm a new to LUA and addon development in general but its fun any suggestions or recommendations are welcome..

In that case, you should be fine using the table that I put there, as those are the things of the quest. Seems I overlooked it, but here's the English version of them, which should help you determine what is what. [CRAFTING_TYPE_ALCHEMY] = "concoction", [CRAFTING_TYPE_ENCHANTING] = "glyph", [CRAFTING_TYPE_PROVISIONING] = "feast", ["plate"] = "plate", ["tailoring"] = "tailoring", ["leatherwear"] = "leatherwear", ["weapon"] = "weapon", ["shield"] = "shield",

As for differentiating Blacksmithing writs from the master writs: You can use GetJournalQuestRepeatType(i)==QUEST_REPEAT_DAILY. If it is true, it's a writ, otherwise it's a master writ.

Note that since you are comparing strings quite often, sometimes the German/French stuff needs a bit of 'massaging' or possibly you could shorten the string you are looking for. For example, longue, longué, longuen, etc. That particular example probably doesn't exist, but should give you the idea.

GetJournalQuestConditionInfo(questIndex, 1, condition number) -> returns _, current, max If the current == max for all of the conditions, you automatically know you need to deliver the item. A bit longer to check than the string, but it'll also be more resistant to language changes.

Finally, another potential solution to differentiating Blacksmith Weapons/Woodworking Weapons: you have the weapon names, so you can use that to search the condition.

In that case, you should be fine using the table that I put there, as those are the things of the quest. Seems I overlooked it, but here's the English version of them, which should help you determine what is what. [CRAFTING_TYPE_ALCHEMY] = "concoction", [CRAFTING_TYPE_ENCHANTING] = "glyph", [CRAFTING_TYPE_PROVISIONING] = "feast", ["plate"] = "plate", ["tailoring"] = "tailoring", ["leatherwear"] = "leatherwear", ["weapon"] = "weapon", ["shield"] = "shield",

As for differentiating Blacksmithing writs from the master writs: You can use GetJournalQuestRepeatType(i)==QUEST_REPEAT_DAILY. If it is true, it's a writ, otherwise it's a master writ.

Note that since you are comparing strings quite often, sometimes the German/French stuff needs a bit of 'massaging' or possibly you could shorten the string you are looking for. For example, longue, longué, longuen, etc. That particular example probably doesn't exist, but should give you the idea.

GetJournalQuestConditionInfo(questIndex, 1, condition number) -> returns _, current, max If the current == max for all of the conditions, you automatically know you need to deliver the item. A bit longer to check than the string, but it'll also be more resistant to language changes.

Finally, another potential solution to differentiating Blacksmith Weapons/Woodworking Weapons: you have the weapon names, so you can use that to search the condition.

great suggestions! I'm working on it now, I really like the GetJournalQuestRepeatType(i) good call. Its been a while since I've dug into the API thanks for that thought. I agree with the string shortening.. makes perfect sense. Since I am "allowing" users to use a slash command outside of a crafting station (/cwa) then it creates a challenge to require parsing the quest details in order to determine the dropdown selection and craft type.