|
3 | 3 | const translatorApi = module.exports; |
4 | 4 |
|
5 | 5 | translatorApi.translate = async function (postData) { |
6 | | - // IMPORTANT: GPU VM URL |
7 | | - const TRANSLATOR_API = 'http://crs-17313-nodegpt-gpu.qatar.cmu.edu/translate'; |
8 | | - |
9 | | - try { |
10 | | - const response = await fetch(TRANSLATOR_API, { |
11 | | - method: 'POST', |
12 | | - headers: { 'Content-Type': 'application/json' }, |
13 | | - body: JSON.stringify({ |
14 | | - content: postData.content.toString(), |
15 | | - }), |
16 | | - }); |
17 | | - |
18 | | - if (!response.ok) { |
19 | | - console.error('Translator API responded with status:', response.status); |
20 | | - // Fail gracefully: treat as English so the forum still works |
21 | | - return [true, '']; |
22 | | - } |
23 | | - |
24 | | - const data = await response.json(); |
25 | | - |
26 | | - const isEnglish = !!data.is_english; |
27 | | - const translated = data.translated_content || ''; |
28 | | - |
29 | | - // 🔍 Attach fields directly onto the post data |
30 | | - // so whatever the PR’s UI expects has a good chance of finding it. |
31 | | - postData.is_english = isEnglish; |
32 | | - postData.isEnglish = isEnglish; // camelCase version |
33 | | - postData.translated_content = translated; |
34 | | - postData.translatedContent = translated; // camelCase version |
35 | | - |
36 | | - console.log('LLM translate debug:', { |
37 | | - original: postData.content, |
38 | | - isEnglish, |
39 | | - translated, |
40 | | - }); |
41 | | - |
42 | | - // Most likely the server code does: |
43 | | - // const [isEnglish, translatedContent] = await translate.translate(data); |
44 | | - return [isEnglish, translated]; |
45 | | - } catch (err) { |
46 | | - console.error('Translator fetch failed:', err); |
47 | | - return [true, '']; |
48 | | - } |
| 6 | + const TRANSLATOR_API = 'http://crs-17313-nodegpt-gpu.qatar.cmu.edu/translate'; |
| 7 | + |
| 8 | + try { |
| 9 | + const response = await fetch(TRANSLATOR_API, { |
| 10 | + method: 'POST', |
| 11 | + headers: { 'Content-Type': 'application/json' }, |
| 12 | + body: JSON.stringify({ |
| 13 | + content: postData.content.toString(), |
| 14 | + }), |
| 15 | + }); |
| 16 | + |
| 17 | + if (!response.ok) { |
| 18 | + console.error('Translator API responded with status:', response.status); |
| 19 | + // Fail gracefully so NodeBB keeps working |
| 20 | + return [true, '']; |
| 21 | + } |
| 22 | + |
| 23 | + const data = await response.json(); |
| 24 | + |
| 25 | + const isEnglish = !!data.is_english; |
| 26 | + const translated = data.translated_content || ''; |
| 27 | + |
| 28 | + // Attach fields for debugging / templates |
| 29 | + postData.is_english = isEnglish; |
| 30 | + postData.isEnglish = isEnglish; // camelCase version |
| 31 | + postData.translated_content = translated; |
| 32 | + postData.translatedContent = translated; // camelCase version |
| 33 | + |
| 34 | + console.log('LLM translate debug:', { |
| 35 | + original: postData.content, |
| 36 | + isEnglish, |
| 37 | + translated, |
| 38 | + }); |
| 39 | + |
| 40 | + return [isEnglish, translated]; |
| 41 | + } catch (err) { |
| 42 | + console.error('Translator fetch failed:', err); |
| 43 | + return [true, '']; |
| 44 | + } |
49 | 45 | }; |
0 commit comments