ಹೊಸದಾಗಿ ಬಿಡುಗಡೆಯಾದ Cache-Control ವಿಶ್ಲೇಷಕವು (analyzer) ಜಪಾನೀಸ್ ಪಠ್ಯವನ್ನು ತೋರಿಸಿತು—ಅದರ ಸ್ಥಿತಿಯು (status) "Fresh" ಬದಲಿಗೆ "新鮮" ಎಂದು ತೋರಿಸುತ್ತಿತ್ತು. ಈ ತಪ್ಪಿನ ಮೂಲವು ಹಂಚಿಕೆಯ ತರ್ಕದಲ್ಲಿತ್ತು (shared logic), ಅಲ್ಲಿ ಪೇಜ್ ಕೇವಲ ಇಂಗ್ಲಿಷ್ ಲೇಬಲ್ಗಳನ್ನು ಒದಗಿಸುತ್ತಿದ್ದರೂ, ತರ್ಕವು ಹಾರ್ಡ್-ಕೋಡ್ ಮಾಡಲಾದ ಜಪಾನೀಸ್ ಸ್ಟ್ರಿಂಗ್ಗಳನ್ನು ಹಿಂತಿರುಗಿಸುತ್ತಿತ್ತು.
ಡೆವಲಪರ್ ಲಘುವಾದ ಬ್ರೌಸರ್ ಪರಿಕರಗಳ ಸರಣಿಯನ್ನು ನಿರ್ಮಿಸುತ್ತಾರೆ, ಪ್ರತಿಯೊಂದೂ ಇಂಗ್ಲಿಷ್ ಪೇಜ್ ಮತ್ತು ಜಪಾನೀಸ್ ಪೇಜ್ ಅನ್ನು ಹೊಂದಿರುತ್ತದೆ ಮತ್ತು ಇವೆರಡೂ ಒಂದೇ ಪಾರ್ಸಿಂಗ್ ಫಂಕ್ಷನ್ಗಳು ಮತ್ತು ಕೋರ್ ಲಾಜಿಕ್ ಅನ್ನು ಮರುಬಳಕೆ ಮಾಡುತ್ತವೆ. ಕೇವಲ ದೃಶ್ಯಮನ್ ಪದಗಳು ಮಾತ್ರ ಬದಲಾಗಬೇಕು. Cache-Control ವಿಶ್ಲೇಷಕವನ್ನು ಬಿಡುಗಡೆ ಮಾಡಿದಾಗ, ಇಂಗ್ಲಿಷ್ ಇಂಟರ್ಫೇಸ್ ಸರಿಯಾದ ಲೇಬಲ್ಗಳನ್ನು ಪ್ರದರ್ಶಿಸಿತು, ಆದರೆ ಅದು ಪ್ರದರ್ಶಿಸಿದ ಮೌಲ್ಯಗಳು ಲಾಜಿಕ್ ಲೇಯರ್ನಿಂದ ಬಂದವು, ಅದು ಇನ್ನೂ ಜಪಾನೀಸ್ ಲಿಟರಲ್ಗಳನ್ನು ಹೊಂದಿತ್ತು. ಯಾವುದೇ ಕನ್ಸೋಲ್ ದೋಷಗಳು ಕಾಣಿಸಲಿಲ್ಲ; ಪೇಜ್ ಸಾಮಾನ್ಯವಾಗಿ ಕಂಡಿತು, ಆದರೂ ಇಂಗ್ಲಿಷ್ ಮಾತನಾಡುವ ಬಳಕೆದಾರರಿಗೆ ಪ್ರಸ್ತುತಪಡಿಸಲಾದ ಮಾಹಿತಿ ತಪ್ಪಾಗಿತ್ತು.
ಹಂಚಿಕೆಯ ತರ್ಕವು (shared logic) ಅನುವಾದವನ್ನು ಏಕೆ ದ್ರೋಹ ಬಗೆಯಬಹುದು
ಈ ಬಗ್ ಒಂದು ವಿನ್ಯಾಸದ ಆಯ್ಕೆಯಿಂದ ಉಂಟಾಯಿತು: ಏನನ್ನು ತೋರಿಸಬೇಕೆಂದು ನಿರ್ಧರಿಸುವ ಕೋರ್ ಫಂಕ್ಷನ್ ಜಪಾನೀಸ್ನಲ್ಲಿ ಲಿಟರಲ್ ಸ್ಟ್ರಿಂಗ್ಗಳನ್ನು ಹಿಂತಿರುಗಿಸುತ್ತಿತ್ತು. ಸುತ್ತಮುತ್ತಲಿನ ಇಂಗ್ಲಿಷ್ ಪಠ್ಯಕ್ಕೆ ಜವಾಬ್ದಾರಿಯುತವಾಗಿರುವ ಪೇಜ್ ಲೇಯರ್ಗೆ ಆ ಮೌಲ್ಯಗಳನ್ನು ಬದಲಾಯಿಸಲು ಅವಕಾಶವೇ ಸಿಗಲಿಲ್ಲ. ತರ್ಕ (logic) ಮತ್ತು UI ಎರಡೂ ಸ್ಪಷ್ಟವಾಗಿ ವಿಭಜಿಸಲ್ಪಟ್ಟಿದ್ದರಿಂದ, ಪರೀಕ್ಷೆಯ ಸಮಯದಲ್ಲಿ ಈ ಸಮಸ್ಯೆ ಗೋಚರಿಸಲಿಲ್ಲ—ತಾಂತ್ರಿಕವಾಗಿ ಎಲ್ಲವೂ "ಕೆಲಸ ಮಾಡುತ್ತಿದ್ದವು", ಬಳಕೆದಾರರಿಗೆ ಕಾಣುವ ಭಾಷೆಯು ತಪ್ಪಾಗಿದ್ದರೂ ಸಹ.
ಇದರ ಅನಾನುಕೂಲವೆಂದರೆ, ಹಂಚಿಕೆಯ ಮಾಡ್ಯೂಲ್ನ ಒಳಗೆ ಬಳಸುವ ಭಾಷೆಯು ಅದನ್ನು ಬಳಸುವ ಪ್ರತಿಯೊಂದು ಫ್ರಂಟ್-ಎಂಡ್ ಗೂ ಡಿಫಾಲ್ಟ್ ಆಗಿ ಬದಲಾಗುತ್ತದೆ. ಬೇರೆ ಭಾಷೆಯ ಅಗತ್ಯವಿದ್ದಲ್ಲಿ, ಆ ಡಿಫಾಲ್ಟ್ ಭಾಷೆಯು ಒಂದು ಗುಪ್ತ ಬಗ್ ಆಗಿ ಪರಿಣಮಿಸುತ್ತದೆ.
ಪರಿಹಾರ: ಕೀಗಳು (keys), ಪ್ಯಾಕ್ಗಳು (packs) ಮತ್ತು ಸುರಕ್ಷತಾ ಜಾಲ (safety net)
ಲೇಖಕರು ಕಾಳಜಿಗಳನ್ನು ಪ್ರತ್ಯೇಕಿಸಲು ಆರ್ಕಿಟೆಕ್ಚರ್ ಅನ್ನು ಮರುಬರಹ ಮಾಡಿದರು:
- Message packs ಈಗ ಪ್ರತಿ ಭಾಷೆಯ ಎಲ್ಲಾ ಮನುಷ್ಯರು ಓದಬಲ್ಲ ಸ್ಟ್ರಿಂಗ್ಗಳನ್ನು ಹೊಂದಿರುತ್ತವೆ.
- Shared logic ಕೇವಲ ಸಾಂಕೇತಿಕ ಕೀಗಳನ್ನು (symbolic keys) ಹಿಂತಿರುಗಿಸುತ್ತದೆ, ಎಂದಿಗೂ ಕಚ್ಚಾ ಪಠ್ಯವನ್ನು (raw text) ಅಲ್ಲ.
- Pages ಕೀಯ ಆಧಾರದ ಮೇಲೆ ಸಂಬಂಧಿತ ಪ್ಯಾಕ್ನಿಂದ ಸೂಕ್ತ ಪದವನ್ನು ಹುಡುಕುತ್ತವೆ.
ಸಂದೇಶವು ಸಂಖ್ಯೆಯನ್ನು ಒಳಗೊಂಡಿರಬೇಕಾದಾಗ, ಹೊಸ ಕೋಡ್ ಟೆಂಪ್ಲೇಟ್ ಸ್ಟ್ರಿಂಗ್ ಬದಲಿಗೆ ಒಂದು ಸಣ್ಣ ಫಂಕ್ಷನ್ ಅನ್ನು ಬಳಸುತ್ತದೆ. ಇದು ಪದಗಳ ಕ್ರಮದಲ್ಲಿನ ವ್ಯತ್ಯಾಸಗಳಿಗೆ ಅನುಗುಣವಾಗಿ, ಸಂಖ್ಯೆಯು ಎಲ್ಲಿ ಇರಬೇಕೆಂದು ಪ್ರತಿ ಭಾಷೆಯು ನಿರ್ಧರಿಸಲು ಅನುವು ಮಾಡಿಕೊಡುತ್ತದೆ.
ಒಂದು ಸರಳ ಸ್ಟ್ಯಾಟಿಕ್-ಅನಾಲಿಸಿಸ್ ಹಂತವನ್ನೂ ಸಹ ಸೇರಿಸಲಾಗಿದೆ: ಬಿಲ್ಡ್ ಪ್ರಕ್ರಿಯೆಯು ಹಂಚಿಕೆಯ ಫೈಲ್ಗಳಲ್ಲಿ ಜಪಾನೀಸ್ ಅಕ್ಷರಗಳಿವೆಯೇ ಎಂದು ಸ್ಕ್ಯಾನ್ ಮಾಡುತ್ತದೆ. ಯಾವುದಾದರೂ ಕಂಡುಬಂದರೆ, ಡೆವಲಪರ್ಗೆ ತಕ್ಷಣವೇ ಎಚ್ಚರಿಕೆ ನೀಡಲಾಗುತ್ತದೆ, ಇದರಿಂದ ಹಾರ್ಡ್-ಕೋಡ್ ಮಾಡಲಾದ ವಿದೇಶಿ ಪಠ್ಯವು ಮತ್ತೆ ಒಳಬರದಂತೆ ತಡೆಯಬಹುದು.
ಈ ಅನುಭವವು ಲೇಖಕರಿಗೆ ಏನು ಕಲಿಸಿತು
- ಅನುವಾದವು ಒಂದು ವಿಮರ್ಶಾ ಹಂತವಾಗಿ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತದೆ. ಇಂಗ್ಲಿಷ್ ಸಂದೇಶಗಳನ್ನು ಬರೆಯುವಾಗ, ಕೆಲವು ಜಪಾನೀಸ್ ಸಮಾನಾರ್ಥಕ ಪದಗಳು ಅಸ್ಪಷ್ಟವಾಗಿವೆ ಎಂದು ಲೇಖಕರು ಗಮನಿಸಿದರು. ಅನುವಾದ ಮಾಡುವುದು ಎರಡೂ ಭಾಷೆಗಳಲ್ಲಿ ಸ್ಪಷ್ಟವಾದ ಪದಬಳಕೆಗೆ ಪ್ರೇರೇಪಿಸಿತು.
- ಸ್ಟ್ರಿಂಗ್ಗಳನ್ನು ಹಿಂತಿರುಗಿಸುವ ಹಂಚಿಕೆಯ ಫಂಕ್ಷನ್ಗಳು ಎಲ್ಲರಿಗೂ ಒಂದು ಭಾಷೆಯನ್ನು ಕಡ್ಡಾಯಗೊಳಿಸುತ್ತವೆ. ಒಂದು ಫಂಕ್ಷನ್ ಭಾಷೆಯನ್ನು ನಿರ್ಧರಿಸಿದರೆ, ಬೇರೆ ಭಾಷೆಯನ್ನು ನಿರೀಕ್ಷಿಸುವ ಯಾವುದೇ ಬಳಕೆದಾರರು ಆ ತಪ್ಪನ್ನು ಅನುಭವಿಸಬೇಕಾಗುತ್ತದೆ. ಈ ಬಗ್ ಕೇವಲ UI ದೋಷವಲ್ಲ; ಇದು ತರ್ಕದ ದೋಷ (logic flaw).
ಬಹುಭಾಷಾ ಪರಿಕರಗಳನ್ನು ನಿರ್ವಹಿಸುವವರಿಗೆ ಶಿಫಾರಸುಗಳು
- ಕೋರ್ ಫಂಕ್ಷನ್ಗಳಿಂದ ಸ್ಟ್ರಿಂಗ್ಗಳ ಬದಲಿಗೆ ಕೀಗಳನ್ನು ಹಿಂತಿರುಗಿಸಿ. ಸ್ಥಳೀಕರಣವನ್ನು (localization) ನಿರ್ವಹಿಸಲು UI ಲೇಯರ್ಗೆ ಬಿಡಿ.
- ಅಥವಾ ಬಯಸುವ ಸ್ಟ್ರಿಂಗ್ಗಳನ್ನು ಪ್ಯಾರಾಮೀಟರ್ಗಳಾಗಿ ಫಂಕ್ಷನ್ಗೆ ಕಳುಹಿಸಿ. ಇದು ತರ್ಕವು ಭಾಷೆಯ ಬಗ್ಗೆ ಅರಿವಿಲ್ಲದಂತೆ (agnostic) ಇರಿಸುತ್ತದೆ.
- ಹಾರ್ಡ್-ಕೋಡ್ ಮಾಡಲಾದ ಸ್ಥಳೀಯ ಭಾಷೆಯ ಪಠ್ಯಕ್ಕಾಗಿ ಹಂಚಿಕೆಯ ಮಾಡ್ಯೂಲ್ಗಳನ್ನು ಪರಿಶೀಲಿಸಿ. non-ASCII ಅಕ್ಷರಗಳಿಗಾಗಿ ಮಾಡುವ ಶೋಧನೆಯು ಗುಪ್ತ ಸಮಸ್ಯೆಗಳನ್ನು ಹೊರಹಾಕಬಹುದು.
- ಹಂಚಿಕೆಯ ಕೋಡ್ನಲ್ಲಿ ವಿದೇಶಿ ಅಕ್ಷರಗಳಿಗಾಗಿ ಬಿಲ್ಡ್-ಟೈಮ್ ಚೆಕ್ ಅನ್ನು ಸೇರಿಸಿ. ಬಿಡುಗಡೆಯ ನಂತರದ ಗೊಂದಭ್ರಮತೆಗಿಂತ ಆರಂಭಿಕ ಪತ್ತೆಯೇ ಉತ್ತಮ.
ಮುಂದೆ ಯಾವುದನ್ನು ಗಮನಿಸಬೇಕು
ಸಾರಾಂಶ: ನಿಮ್ಮ ಪ್ರಾಜೆಕ್ಟ್ ಭಾಷಾ ಆವೃತ್ತಿಗಳ ನಡುವೆ ಕೋಡ್ ಅನ್ನು ಹಂಚಿಕೊಂಡಿದ್ದರೆ, ಹಂಚಿಕೆಯ ಭಾಗವು ಎಂದಿಗೂ ಪದಗಳ ಆಯ್ಕೆಯನ್ನು ನಿರ್ಧರಿಸದಂತೆ ನೋಡಿಕೊಳ್ಳಿ. ಪ್ರತಿಯೊಂದು ಪೇಜ್ ತನ್ನದೇ ಆದ ಪದಗಳನ್ನು ಒದಗಿಸಲು ಬಿಡಿ, ಆಗ ಇಂಗ್ಲಿಷ್ ಪೇಜ್ ಆಕಸ್ಮಿಕವಾಗಿ ಜಪಾನೀಸ್ ಮಾತನಾಡಿಸುವ ಮುಜುಗರವನ್ನು ನೀವು ತಪ್ಪಿಸಬಹುದು.
