quisquous / cactbot

FFXIV TypeScript Raiding Overlay
Apache License 2.0
794 stars 378 forks source link

Add fr localization #57

Closed quisquous closed 5 years ago

quisquous commented 6 years ago

I think the first step is to add a locale file like hibiyasleep did for pull #23.

Timelines and triggers are their own thing. The current trigger format looks like this:

{
  id: 'O8S Shockwave',
  regex: / 14:28DB:Graven Image starts using Shockwave/,
  delaySeconds: 5,
  alertText: 'Look for Knockback',
  tts: 'knockback',
},

I think we could do something like this:

{
  id: 'O8S Shockwave',
  regex: / 14:28DB:Graven Image starts using Shockwave/,
  regexFr: /something fr here/,
  regexKo: /something ko here/,
  delaySeconds: 5,
  alertText: {
    en: 'Look for Knockback',
    fr: 'fr text here',
    ko: 'ko text here',
  },
  tts: {
    en: 'knockback',
    fr: 'fr tts here',
    ko: 'ko tts here',
  },
},

For timelines, one option that I'm not really fond of is to just have entirely duplicate timelines for each language. That seems less than great, because then if somebody ever resyncs times in a timeline or something, they'd have to adjust everything independently. I was thinking of maybe being able to just replace ability names from the english version.

So, I was thinking of something like this, for o8s.txt:

{
  replaceNames: {
    'Graven Image': 'fr translation',
    'Mana Charge': 'fr translation2',
  },
  replaceSyncs: {
    'Kefka': 'fr kefka mob name',
    'Graven Image': 'fr graven image mob name',
  },
},

I was thinking of just applying them all as search and replace regex substitutions, with a different block for replacing the timeline text in the bars from the replacing the syncs.

nuks-fr commented 6 years ago

I don't know if I should post this here or make a new Issue but there is a problem with eureka tracker. trackerName is different depending on which language you set the website English : ★ NMs whose windows are open: Sabo > Lord > Teles > Emperor > Callisto > Number > Jaha > Amemet > Caym > Bomba > Serket > Julika > Rider > Poly > Strider > Hazmat > Fafnir > Amarok > Lamashtu > Pazuzu German : ★ NMs whose windows are open: Sabo > Prinz[p] > Teles > Kaiser > Callisto > Zahl > Jaha > Amemet > Caym > Bomba > Serket > Julika > Reiter > Poly > Simurghs > Hazmat > Fafnir > Amarok > Lamashtu > Pazuzu French : ★ NMs whose windows are open: Pampa > Seigneur > Teles > Empereur > Callisto > Number > Jaha > Amemet > Caym > Bomba > Serket > Julika > Cavalier > Poly > Simurgh > Hazmat > Fafnir > Amarok > Lamashtu > Pazuzu Japanese : ★ NMs whose windows are open: サボテンダー > ロード > テレス > アネモス > カリスト > ナンバーズ > ジャハンナム > アミメット > カイム > ボンバディール > セルケト > ジュリカ > ホワイトライダー > ポリュペモス > シームルグ > ハズマット > ファヴニル > アマロック > ラマシュトゥ > パズズ

I think we should do for trackerName the same thing you did for mobName mobName: { en: 'Sabotender Corrido', de: 'Sabotender Corrido', fr: 'Pampa Corrido', ja: 'サボテンダー・コリード', }, trackerName: { en: 'Sabo ', de: 'Sabo', fr: 'Pampa', ja: 'サボテンダー', },

quisquous commented 6 years ago

Thanks for pointing that out! Sorry for not doing that earlier.

nuks-fr commented 6 years ago

Don't be sorry, you have done an amazing job with this plugin.

quisquous commented 5 years ago

I think this issue can be closed now, and any specific followups can be made in pull requests. Thanks for all the translation work!